美文网首页iOS资源带我飞2iOS移动开发
AutoLayout好多好多不懂的 终于明白了

AutoLayout好多好多不懂的 终于明白了

作者: 南栀倾寒 | 来源:发表于2015-10-10 19:17 被阅读6809次

 AutoLayout这玩意越用越上瘾    自从我学会了这个  还是那句话 能不用代码就不用代码 

这篇文章不讲解AutoLayout 怎么使用  只是总结下最近学的东西 和更多你不知道的细节总结


本文大致讲解个部分

1 . UIStackView

2. AutoLayout与Frame的关系

3.AutoLayout动画


1 UIStackView

先推荐点资料  

UIStakView入门   iOS 9新功能 具体支持到几我不清楚 

看完这个你以后布局更方便了  

举个例子 AutoLayout分分钟搞定等比例布局 之前我的帖子这样做

现在有了更简单的


2. AutoLayout与Frame的关系

曾经有次我被面试官问了一个面试题     如果你用了AutoLayout 再修改Frame 会有什么效果 有没有什么不好的

看这问题 所有人都能猜到肯定有不好的  但是具体也不知道是啥  

看demo  一个view


3.AutoLayout动画

如果你用了AutoLayout  那么做动画的时候  你就不要再操作 Frame  bounds center  等position属性

因为这些动画都是临时的  下次的View 被 setNeedsUpdateConstraint  这些全都失效   

但是其他的可动画属性(Animation Properties) 还是可以的 如 Color  alpha等 

1. 更新约束的内容  

针对 Constraint 一掉要调用LayoutIfNeed()  不然会造成不可预料的结果。  有可能下一刻动画剩下  也有可能然并卵       在NSLayoutConstraint中  唯一可变的 也就是 可set 可 get的属性就    constant 

像其他FirstItem等是不可修改的      所以如果要修改参考物参看 下面的方法 

2 .  替换约束的动画 

添加约束可以通过  

self.view.addConstraint(<#T##constraint: NSLayoutConstraint##NSLayoutConstraint#>)

self.view.addConstraints(<#T##constraints: [NSLayoutConstraint]##[NSLayoutConstraint]#>)

在iOS 8中有更好的方法  newConstraint.active=true 就可以

相关文章

  • AutoLayout好多好多不懂的 终于明白了

    AutoLayout这玩意越用越上瘾 自从我学会了这个 还是那句话 能不用代码就不用代码这篇文章不讲解AutoL...

  • 不懂好多好多

    电话电话电话

  • 不懂的知识好多

    以前没有好好学习,听课也开小差,现在发现很多知识都是不理解的,知其然不知其所以然,这样的态度,是学不好的,于理解无...

  • 住院三天,明白了好多!

    1、前天很倒霉,几个孩子在家里玩耍的时候,闺女不小心从沙发上掉下来,左肩膀着地,骨折了…… 当时我在门口,听到儿子...

  • 全国好多地方终于降温了

    今天是2022.8.24号,坐标城市嘉兴。 今天是第一天开始降温,终于要结束几近天天都是40度左右高温的天气,这个...

  • 有好多不懂的

    你不懂就问 但问了还是不懂 懵懵的无奈 只有亲自去尝试一番 怎奈效果不为乐观 那就继续操作 操作的过程在摸索 但脑...

  • 好多会议,好多报告,好多好多……

    繁忙,似乎成了生活的主节奏,难道现在要卷成这样吗?不容得喘息一口气!生活的主旋律不应该是生活吗?怎么感觉全部成了工...

  • 21岁,明白了好多事情!

    成长的路上,荆棘满满,不知何时学会避让,也不知何时开始有了自己的小心思。一切都是成长的代价,也是成长的恩赐,好的坦...

  • 突然之间明白了好多事

    前天一天都在亢奋中,和朋友打电话也被温暖到了。 做的那个捡钱的梦,不知道咋了,当从梦里醒来,我始终把梦和现实分不清...

  • 好多好多

    今天发生了好多好多事 从昨天的没连麦 到沟通好 又到生日讨论 又到我妈让我崩溃 又到心里建设好 到好好上课 到上床...

网友评论

  • 山林间迷雾能不能当障眼法的内容:弟2点 Autolayout 和 frame 那个问题。我想知道旋转屏幕后 怎么就会回复之前的布局呢。求告知
  • Theyouth:好东西
  • yehot:66666
  • 卓无尘:看了下autolayout,还是有点不明白,在屏幕尺寸不一样的情况下是怎么适配的,距离边距都是已经写固定的。 比如说iphone5的高度是568,6的高度是667,当有一个控件是距上边距600的时候,这在iphone5如何显示(当然,可以都使用距离下边距多少来解决)。或者是当一个textfield距离左边100,右边100的时候,在iphone6上这个大小可能很好,但是在iphone5上就变窄了点。 这个适配还是不能完全解决问题,是不是我们最后还是要做一些微调呢? 请教一下,谢谢。
    南栀倾寒:@卓无尘 这种一般叫做以间距做适配 等比例适配几乎是不可能的
    南栀倾寒:@卓无尘 你会看到大公司 如网易新闻给的 设计 都是距离左侧20px 那么拖出来的约束 写的就是10 到了6 Plus上面就是30 但是是不影响效果的
    南栀倾寒:@卓无尘 一般高度的话是 我们加一个scrollview 如果iphone6能显示全就显示全 要是iPone5s 以下显示不全就让他滚动显示 一般两侧间距都是为了美观 不会影响页面内容显示 如果有超出的话 比如label 一般都会换行显示
  • f0520472b51a:路过支持一下原创分享,也补充一下一些点吧:
    UIStakView只支持iOS9,Apple在IB里做了个很方便的方式使用,而且推荐使用,立意应该是要大伙都把一般布局都换成UIStackView的样子,估计做了不少优化,但仅9.0对于目前来说然并卵。。。
    关于AutoLayout和Frame混合设置的问题,其实可以这么理解:AutoLayout可以看作是一个Frame的自动设置机制,所以你再手动设置Frame那是可以的,但问题是你手动设的是Frame,AutoLayout自动设的也是Frame,互相覆盖是正常现象,所以要控制就保持所有地方可控,要自动就让它自动。当然这个大家都懂。。
    关于动画部分,其实 self.viewHeightConstraint.constant = 500 这些constraint设置可以放在外面,block里面就放layoutIfNeed就可以了,因为这个才是真正触发改变的方法。这样写的话代码会稍微清晰一点。
  • liril:请问,你GIF是用什么做的?
    liril:@南栀倾寒 LICEcap这个吧
    liril:@南栀倾寒 没有搜索到相关的信息,, :scream:
    南栀倾寒:@liril lincap什么的
  • smalldu:66666666

本文标题:AutoLayout好多好多不懂的 终于明白了

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