美文网首页
masonry更新约束

masonry更新约束

作者: 爱笑的Mr张 | 来源:发表于2018-09-10 10:58 被阅读0次

    iphone屏幕大小越来越多样化,使用frame来布局已经是强弩之末,好多同行前辈已经把autolayout研究的滚瓜烂熟了,但是苹果的autolayout过于繁琐,懒得去研究,有一个非常好用而且功能非常强大的第三方自动化布局框架masonry,简书等各个论坛或者网站教程一大堆而且讲的都比较详细,多以直接站在巨人的肩膀上研究自动布局,真的是事半功倍,

    以前做动画很多时候需要用到frame,那么使用masonry之后你会发现取得的frame都为0,瞬间懵逼,这怎么搞,网上关于masonry的教程很多,但是对于这个问题相对来说比较少,在网上看了几篇文章,对这个问题有所了解,那么怎么解决呢,先看一下这几个方法!

    setNeedsLayout

    setNeedsLayout:告知页面需要更新,但是不会立即开始更新.执行后立即调用layoutsubviews;

    layoutIfNeeded

    layoutIfNeeded:告知页面需要立即更新,所以一般会和setNeededLayout配合使用.如果希望立即生成新的frame需要调用此方法,利用这点一般布局动画可以使用这个方法是动画生效.

    layoutsubviews

    layoutsubviews:系统重写布局

    setNeedsUpdateConstraints

    setNeedsUpdateConstraints:告知需要更新约束,但是不会立刻开始

    updateConstraintsIfNeeded

    updateConstraintsIfNeeded:告知立刻更新约束

    updateConstraints

    updateConstraints:系统更新约束

    那么了解完第一第二个方法之后我们的问题就很顺利的解决了,当使用autolayout布局时如果需要取得某个控件的frame,我们只需要用该控件的对象调用setNeedsLayout和layoutIfNeeded方法然后实现layoutsubviews或者viewDidLayoutSubviews(当控件直接写在controller里时)方法即可!

    转载https://www.cnblogs.com/lizhishuai/p/5946944.html

    相关文章

      网友评论

          本文标题:masonry更新约束

          本文链接:https://www.haomeiwen.com/subject/nxzjgftx.html