看图图中有一个3ce三色眼影 红色盒子的盒子是什么

1302人阅读
iPhone开发(339)
当同事问到我这个问题时,我脑子中直接冒出了一个词“弹性盒子”。&问题:&有一个 Cell 中有 4 个并排排列的控件,布局如下图所示:假设:&1、&&&&&&&&这些控件高度和y坐标固定。2、&&&&&&&&蓝色控件x位置固定,但右端对齐于黑色控件。3、&&&&&&&&黑色、红色、绿色控件宽度固定,右端对齐于右侧的控件(绿色控件右对齐于cell 的右边)。&要求:1、&&&&&&&&当黑色、红色、绿色控件中的任意一个控件隐藏时,其余两个控件自动右移占据隐藏控件的控件,蓝色控件则自动布满剩下的宽度。以下是分别隐藏其中一个控件的效果:2、&&&&&&&&依次类推,当隐藏其中任意2个控件和3个控件全都隐藏的效果如下图所示:如果是 HTML5,这个问题用“弹性盒子”来解决是再合适不过了。但是“弹性盒子”是 CSS 3.0中新增的内容,iOS 并不支持弹性盒子,我们只能自己来解决这个问题。&幸好 iOS 有自动布局,我们可以用自动布局来解决这个问题(当然还需要一点点代码)。&一、&&&&&UI 设计&打开故事板,向viewcontrollerz中拖入4个UIView,和3个按钮,如下图所示:这个4个 UIView 和 3个 UIButton 分别是干什么的,相信你已经能一目了然了。按钮先不管,先看看4个View。蓝色view的自动布局约束是这样的:top:24,leading:16,height:24,trailing:10&黑色、红色、绿色 view 的布局约束都是一样的:&width:37,height:24,top:24,trailing:10&四个UIView 分别连接至如下 IBOutlet:蓝色& v1黑色& v2红色& v3绿色& v4&三个按钮的点击事件则分别连接到三个IBAction:&&&&&&& @IBActionfunc hideGray(sender: AnyObject) {&&&&&&&&&&&&&&hide(v2)&&& }&&& &&&@IBAction func hideRed(sender: AnyObject) {&&&&&&&hide(v3)&&& }&&& &&&@IBAction func hideGreen(sender: AnyObject) {&&&&&&&hide(v4)&&& }&hide()方法待会介绍。&一、&&&&&弹性盒子设计&当黑色、红色、绿色view隐藏时(即hidden 属性为true),自动释放其占据的空间,我们需要让它们的布局约束根据hidden属性进行改变。从上面我们可以得知,它们的自动布局约束主要是如下几个:&width、height、leading、trailing。&这几个布局跟View所占据的空间有密切关系。其中,height我们不用管,因为它们当width=0 时它们的占据的空间就已经释放了,height值是多少就无关紧要了。那么也就是说,当view隐藏时,我们让view的width、leading、trailing同时为0,就释放了view所占据的空间。因此,我们需要在运行时获取width、leading、trailing这三个约束,并根据hidden属性修改它们。那么我们能够在运行时获得View的指定约束吗?答案是肯定的。我们知道,UIView有一个 constraints()方法,返回一个NSLayoutConstraints数组,包含了其所有的width、height是属于view的constrains,而leading、trailing则是属于superview的。我们可以通过遍历这两个数组来找到我们想要的约束。&我们用一个UIView的扩展来实现这个目的:&extension UIView{&&&func widthConstraint()-&NSLayoutConstraint?{&&&&&&&&&&&&&&for constraint in self.constraints() {&&&&&&&&&&&let firstItem = constraint.firstItem as? UIView&&&&&&&&&&&if firstItem == self && constraint.firstAttribute ==NSLayoutAttribute.Width{&&&&&&&&&&&&&&& println(&I gotit:\(constraint)&)&&&&&&&&&&&&&&& return constraint as?NSLayoutConstraint&&&&&&&&&&&}&&&&&&&}&&&&&&&return nil&&& }&&& &&&func leadingConstraint()-&NSLayoutConstraint?{&&&&&&&&&&&&&&if self.superview == nil {&&&&&&&&&&&return nil&&&&&&&}&&&&&&&for constraint in self.superview!.constraints() {// 这个约束是在superview 中了&&&&&&&&&&&let firstItem = constraint.firstItem as? UIView&&&&&&&&&&&let secondItem = constraint.secondItem as? UIView&&&&&&&&&&&if firstItem == self && constraint.firstAttribute ==NSLayoutAttribute.Leading{&&&&&&&&&&&&&&& println(&I gotit:\(constraint)&)&&&&&&&&&&&&&&& return constraint as?NSLayoutConstraint&&&&&&&&&&&}&&&&&&&}&&&&&&&return nil&&& }&&& &&&func trailingConstraint()-&NSLayoutConstraint?{&&&&&&&if self.superview == nil {&&&&&&&&&&&return nil&&&&&&&}&&&&&&&&&&&&&&for constraint in self.superview!.constraints() {// 这个约束是在superview 中了&&&&&&&&&&&let firstItem = constraint.firstItem as? UIView&&&&&&&&&&&if firstItem == self && constraint.firstAttribute ==NSLayoutAttribute.Trailing{&&&&&&&&&&&&&&& println(&I gotit:\(constraint)&)&&&&&&&&&&&&&&& return constraint as?NSLayoutConstraint&&&&&&&&&&&}&&&&&&&}&&&&&&&return nil&&& }}&然后我们来设计一个弹性盒子,用来管理这三个View。弹性盒子类的主要目的,是将这些View的三个约束的值保存到一个地方(比如说字典中),然后当某个View的hidden属性设为false时,将约束恢复至原来的值并显示出来。&class FlexibleBox:NSObject{&&&&&& structViewSpace:Printable{&&& &&&&& var widthConstant:CGFloat = 0&&& &&&&& var leadConstant:CGFloat = 0&&& &&&&& var trailConstant:CGFloat = 0&&& &&& &&&&& var description: String {&&&&&&&&&&& return &width-\(widthConstant)\nleading - &&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& \(leadConstant)\ntrailing- \(trailConstant)&&&& &&&&& }&&&&&& }&&&var cachedConstraints = [UIView:ViewSpace]()&&& &&&func addViews(views:[UIView]){&&&&&&&for view in views {&&&&&&&&&&&addView(view)&&&&&&&}&&& }&&&func addView(v:UIView){&&&&&&&var space = ViewSpace()&&&&&&&&&&&&&&if let constraint = v.trailingConstraint() {&&&&&&&&&&&space.trailConstant = constraint.constant&&&&&&&}&&&&&&&if let constraint = v.leadingConstraint() {&&&&&&&&&&&space.leadConstant = constraint.constant&&&&&&&}&&&&&&&if let constraint = v.widthConstraint() {&&&&&&&&&&&space.widthConstant = constraint.constant&&&&&&&}&&&&&&&cachedConstraints[v]=space&&&&&&&println(&\(space)&)&&& }&&& &&&func freeViewSpace(v:UIView){&&&&&&&v.widthConstraint()?.constant = 0&&&&&&&v.leadingConstraint()?.constant = 0&&&&&&&v.trailingConstraint()?.constant = 0&&& }&&& &&&func resumeViewSpace(v:UIView){&&&&&&&let space = cachedConstraints[v] ?? ViewSpace()&&&&&&&v.trailingConstraint()?.constant = space.trailConstant&&&&&&&v.leadingConstraint()?.constant = space.leadConstant&&&&&&&v.widthConstraint()?.constant = space.widthConstant&&& }&&& &&&deinit{&&&&&&&cachedConstraints.removeAll(keepCapacity: false)&&& }}&二、&&&&&使用弹性盒子&在View Controller 中声明一个弹性盒子:let flexBox = FlexibleBox()&然后在viewDidLoad方法中:flexBox.addViews([v2,v3,v4])&然后但点击按钮时,调用如下方法隐藏(或取消隐藏)一个View:&&&&func toggleViewHiddenStatus(v:UIView){&&&&&&&&&&&&&&if v.hidden == false {&&&&&&&&&&&flexBox.freeViewSpace(v)&&&&&&&}else{&&&&&&&&&&&flexBox.resumeViewSpace(v)&&&&&&&}&&&&&&&v.hidden = !v.hidden&&&&&&&self.view.setNeedsLayout()&&& }&最后一句self.view.setNeedsLayout()将导致所有自动布局约束被重新计算。&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3067857次
积分:30487
积分:30487
排名:第113名
原创:220篇
译文:145篇
评论:1377条
阅读:31102
阅读:48375
阅读:54498
阅读:75801
阅读:128773
(5)(4)(4)(5)(4)(4)(5)(4)(5)(5)(4)(4)(4)(4)(4)(4)(4)(4)(4)(4)(4)(5)(4)(5)(5)(6)(9)(5)(6)(4)(5)(5)(5)(5)(5)(4)(5)(5)(5)(6)(5)(3)(6)(5)(5)(6)(5)(6)(6)(3)(6)(8)(8)(5)(8)(8)(9)(4)(8)(10)(10)(10)(10)(11)(6)(4)(4)(8)(5)(5)(1)(3)(3)(1)(10)(2)(2)(1)(2)(2)ChinaGB国家标准频道_中国最大的标准咨询服务网站
、、、、、
内蒙古出入境检验检疫局日对外通报,2016年前五月满洲里口岸果蔬出口额突破1亿美元,与
饮食&·&标准
家居&·&标准
低碳&·&标准
泛&·&标准
部分品牌童鞋存在有不合格项目&给孩子买鞋子,别只图漂亮
?商场售卖的不少童鞋上粘贴有水钻等装饰物。
网售童鞋的合格率仅为40%。许多商场里销售的品牌童鞋照样有不合格项....【】
凤冈:推进茶园标准化建设迎来点赞
2016年12月起兰州禁售非“国五”标准车
消费与安全:责任与标准并重
因为3.15,每年的3月都似一个集会。在这里,消费者集中对上一年度的消费侵权遭遇进行声讨。似乎也只有这个...[]看图猜成语中有一个人在一条岔路上有个红盒子_百度知道
看图猜成语中有一个人在一条岔路上有个红盒子
看图猜成语中有一个人在一条岔路上有个红盒子
~.  【出处】《京本通俗小说·错斩崔宁》.  (2)教体育;而是中途才学习或改行的:“先前读书;我是中途改行.便是半路出家的一般;不能写作“嫁”  半路出家  bàn lù chū jiā  【解释】原指成年后才出家做和尚或尼姑.  【正音】家.一般作宾语.  【辨形】家.  【用法】多含贬义,却去改业做生意、定语、训练有素  【例句】  (1)我学德语是~.比喻中途改行.多用于口头语;用在自己身上为自谦之语 ;表示不是从开始就从事某项工作.  【近义词】半道出家  【反义词】科班出身;不能读作“jià”,从事另一工作.”  【结构】偏正式,后来看看不济
其他类似问题
为您推荐:
看图猜成语的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁投百网(百投百中) - 足球比赛视频下载_高清足球录像回放_天下足球精彩视频
投百网(百投百中)为您提供最新最快的足球视频录像和下载,长期关注并更新五大联赛走势,不定期更新其他热门足球比赛
15-16赛季英超
15-16赛季意甲
15-16赛季西甲
15-16赛季德甲
15-16赛季法甲
最新更新参赛队伍语言观看比赛
Powered by
投百网()意味百投百中,我们的宗旨是与您分享精彩的足球体育赛事,并倡导健康的体育运动
如本页存在无法观看、下载、分类错误或其余任何问题,请务必附带本页网址并简单的描述问题发送到我们的客服邮箱联系我们,我们会尽快处理您反馈的问题!查看: 568|回复: 11
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
本帖最后由 快乐人 于
06:46 编辑 1 r3 q$ {, V' e
都是在专柜买的。
物品1:匡威红色2008奥运纪念款ONE STAR,纯皮的款,37.5码,成色看图吧,就是右脚内侧有一点点开胶(见图),50包快递了,有盒子' J& h0 k3 e. V% f3 F1 Z&&q
物品2:黑色AD女款休闲布裤,裤子属于宽松直通的,有弹力,非常新,没怎么穿,L码170/76A&&腰围:80CM;前档长24CM;裤长97CM。50包快递。! h3 S; g. x: B; P
物品3:灰蓝色AD女款休息8分裤,裤子是布料的,很漂亮,没有弹力,非常新,没怎么穿,L码170/76A,腰部有松紧,腰围70(平铺)能拉到82CM吧,前档长23CM,裤长81CM,50元包快递。
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
晕,图怎么没穿上,明天再传图,可以到淘宝店看
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
晕,图怎么没穿上,明天再传图,可以到淘宝店看
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
喜欢的朋友可以上淘宝店直接拍下
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
注册时间最后登录在线时间957 小时阅读权限100积分16856帖子精华0UID181626
鞋仙, 积分 16856, 距离下一级还需 3144 积分
威望795 点注册时间积分16856精华0帖子
喜欢的朋友可以上淘宝店直接拍下
/快乐购物,快乐就好。日单潮流青果领卫衣外套开衫大量到货,淘宝最低价,白菜价!
灌水天才奖
Medal No.8
Medal No.9
新人进步奖
Medal No.10
爱心使者奖
Medal No.11
健康阳光奖
Medal No.13
在线持久奖
Medal No.15
热心网友奖
Medal No.17
Powered by

我要回帖

更多关于 小米盒子 看图软件 的文章

 

随机推荐