问一个关于masonry布局的问题

[复制链接]
81 13
约束是和创建一起写到init中 还是写到layoutsubview中 还是有其他专门写约束的地方呢??

还有一个问题,在cell中有三个横向排列居左的标签,每个标签都可能显示及不显示,那这种情况我是在cell赋值的地方手动判断隐藏显示,然后更新标签布局,然后调用layoutIfNeeded实现的,问下还有其他办法么

举报 使用道具

回复

13 个评论

hqnfj  新手上路  发表于 2019-3-7 11:17:02  | 显示全部楼层
约束是和创建一起写到init中 还是写到layoutsubview中 还是有其他专门写约束的地方呢??     

还有一个问题,在cell中有三个横向排列居左的标签,每个标签都可能显示及不显示,那这种情况我是在cell赋值的地方手动判断隐藏显示,然后更新标签布局,然后调用layoutIfNeeded实现的,问下还有其他办法么

举报 使用道具

回复
2chen  新手上路  发表于 2019-3-7 11:22:54  | 显示全部楼层
仅设置上下左右约束,不设置宽高,label有内容的话会自动计算,达到你要的效果

举报 使用道具

回复
indig0  新手上路  发表于 2019-3-7 12:21:09  | 显示全部楼层
设置宽度约束>=0即可自动填充内容

举报 使用道具

回复
newfuture1020  新手上路  发表于 2019-3-7 13:09:32  | 显示全部楼层
都理解错了  这样的   现在的做法是cell赋值的时候手动隐藏图片 然后layoutIfNeeded  这样做感觉不太好

举报 使用道具

回复
xiaohe1900  新手上路  发表于 2019-3-7 13:35:34  | 显示全部楼层
一开始我们都用mas_make,这个函数只能约束一次,你设置过一次之后就不能使用mas_make,所以我们在隐藏显示的时候要更改约束,只能用mas_update。我是使用这一种。

另外我猜可以这样,在layoutsubview中用mas_remake ,在传model时候调用[self setNeedsLayout]; [self layoutIfNeeded];立即调用layoutsubview,重新设置布局,但我怎么感觉这样不是很好。

关于隐藏和显示,设置make.width 为0就可以了

举报 使用道具

回复
kuaisan  新手上路  发表于 2019-3-7 14:22:31  | 显示全部楼层
你理解错了 这里不刷新楼主来问什么。。楼主的意思是有很多个标签,可能有的标签显示有的不显示,直接隐藏标签会占坑的

举报 使用道具

回复
xiajiajay  新手上路  发表于 2019-3-7 15:21:59  | 显示全部楼层
init中写一些固定约束。
设置好model后或者需要动画效果更新约束。
需要约束立即生效layouifneed。
第二个问题1楼说的正确,同时最好限制最大宽高

举报 使用道具

回复
lkdngy  新手上路  发表于 2019-3-7 15:39:15  | 显示全部楼层
layoutsubview   会调用很多次吧,这样感觉也不太好,难道是只把需要更新的约束写在这里面其他的还写在init中?     现在就是标签隐藏后需要手动去设置约束,然后手动去layoutIfNeeded,虽然能实现,但感觉这样做很笨的样子

举报 使用道具

回复
schullers  新手上路  发表于 2019-3-7 15:54:58  | 显示全部楼层
init里面不要设置任何与ui相关的操作包括布局

原则是 等viewdidload 执行完毕之后才可进行ui的操作

layoutsubviews 中也可以,但是要记住layoutsubviews可能会执行多次,比如你改变了frame 等等

所以如果是懒加载的,你完全可以放心的在layoutsubviews 中写,如果并非懒加载的,为了避免重复加载,也避免ui出现异常,在viewdidload 中 写ui 是比较稳妥的

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ios.irunthink.com
搜索
热搜: iOS swift 下拉刷新

图文热点

更多

开发教程

更多

客服中心

400-800 周一至周日 9:30-17:30 仅收市话费

关注我们

  • 微信扫描
  • 关注微信
关于我们
关于我们
友情链接
联系我们
帮助中心
精贴推荐
源码上传
注册登录
服务支持
资源下载
关注我们
官方微博
官方空间
快速回复 返回顶部 返回列表