AutoLayout学习体验

首先,先引入一下一些前人大牛关于al(autolayout)的学习博客,我也是从这些博客中学习过来的。

http://jixuqianxing.github.io/blog/2014/12/16/21041216/   (AutoLayout之可视化布局)

http://jixuqianxing.github.io/blog/2014/11/28/jing-tong-autolayout/  (AutoLayout实用技巧)

http://jixuqianxing.github.io/blog/2014/12/11/20141212/#userconsent#   (AutoLayout之纯代码布局)

http://www.cocoachina.com/ios/20141217/10669.html     (iOS 8 AutoLayout与Size Class自悟)


上面第一第二个链接是关于可视化界面的;第三个是VFL实现代码布局,一般我是使用可视化布局的,但有时候有的界面会需要调整,会涉及到约束,这个时候会考虑用VFL来修改约束;第四个链接主要是size class的,size class是用来做旋转适配的,文章中的例子很不错,一句代码不用就实现了各种机型不同方向下的不同布局。


现在开始我的补充,以下的举例用作帮助理解,严谨性不做考虑。

1.压缩阻力和内容吸附

如果使用UILabel或者UIButton或者UIImage,在其有文字或图片内容的情况下,使用al,你会发现只需要设置位置就可以,而不用指定宽高。这是因为上面这几个存在内在内容,有压缩阻力和内容吸附(见下图)

162508_P6XE_574245.png

上图中标出的第一个是内容吸附,第二个是压缩阻力,上图是默认值。

顾名思义,压缩阻力是指保护视图内容的方式。压缩阻力高的视图能抵抗压缩,不允许内容被剪切。当你设置UILabel或者UIButton(有内容)的约束,位置+固定宽高的时候,发生了约束的冲突或者丢失,许多时候就是因为压缩阻力和固定宽高的约束冲突(解决方法是修改其中一个的优先级)。

内容吸附,是视图防止与其核心内容间作填充或直接伸展其核心内容的作用。像UIButton的文字内容会处于按钮正中央,并且和边缘有一定的距离。当内容吸附优先级小的时候,UIButton的宽高很大,文字内容会被允许伸展,内容吸附优先级高的时候,即使宽高很大,文字内容还是适应自己的内容尺寸,不允许被伸展。


2.优先级

优先级在al中是一个很重要的元素,发生冲突的解决方法就是修改优先级。

举个例子,设置一个UILabel的压缩阻力优先级是1000(最高优先级),UILabel的内容尺寸宽是150,又设置了UILabel的宽是固定100(默认的优先级也是1000),这个时候就发生约束冲突,因为内容尺寸宽比固定宽要大,不可能出现既不压缩内容的情况下固定宽高。解决方法是降低其中一个的优先级,比如降低固定宽的优先级到750,那么运行时,会以内容尺寸宽作为UILabel的宽;如果是降低压缩阻力的优先级,那么会显示固定宽为UILabel的宽。

优先级就是谁高执行谁。


3.倍数Multipliter

170227_j4pS_574245.png

上图中设置了一个Label和一个UIButton等宽,如果想设置Label的宽是Button的倍数,可以通过这个属性进行修改。


=====================懒得再写新的而补充内容的分割线=========================

scrollView

scrollView在al中是一个比较特殊的存在,因为它有contentSize这个东西。一般的控件在使用al约束的时候,只需要约束住X、Y和宽高(有的宽高自适应),往其上加子视图也是一样。但往scrollView上加子视图的时候不同,因为有contentSize的存在。

scrollView必须知道自己的内容的宽高,即使你不需要它滚动,也是需要的。

解决方法是往scrollView上添加一个view,作为contentView,即内容视图,设置这个contentView的约束是上下左右贴边(即为0)。这个时候还是会爆约束缺失的红点,因为我们需要为contentView指定滚动的方向,如果是上下滚动,设置约束水平居中,如果是左右滚动,设置约束垂直居中。再指定内容的尺寸,比如是上下滚动,给contentView再加一个高度约束,固定高度,这里可以先随便给个高度,反正后面可以改动。把这个高度约束设为属性(可以通过xib的拉线拉为属性),这里我们可以设置这个高度约束值是我们想要的了,可以是静态指定值,也可以是动态变化的。

可以在viewDidLoad或者在updateViewConstraints里设置y约束值,这个随意。


动画

al的情况下做简单的UIView的动画,比如是某个view高度增高,要有个动画效果,一样先获取这个view的高度约束,可以是先将这个高度约束设为一个属性,也可以是从for循环中循环出这个约束,然后先修改这个约束的值为自己最终想要的值,再执行动画,示例如下

    _viewHeightConstraint.constant = 100;
    [UIView animateWithDuration:3 animations:^{
        [self.view layoutIfNeeded];
    }];

layoutIfNeeded的作用是更新约束变化。

转载于:https://my.oschina.net/u/574245/blog/480132

内容概要:2025年大宗商品市场展望报告由世界银行发布,分析了能源、农业、金属和矿物、贵金属以及化肥等多个主要商品类别的市场发展与前景。报告指出,由于全球经济增长放缓和贸易紧张加剧,2025年大宗商品价格预计总体下降12%,2026年进一步下降5%,达到六年来的最低点。油价预计2025年平均为每桶64美元,2026年降至60美元,主要受全球石油消费放缓和供应增加的影响。农业商品价格预计2025年基本稳定,2026年下降3%,其中粮食和原材料价格分别下降7%和2%,但饮料价格上涨20%。金属价格预计2025年下降10%,2026年再降3%,特别是铜和铝价格将显著下跌。贵金属如黄金和白银因避险需求强劲,预计价格将继续上涨。报告还特别关注了疫情后大宗商品周期的变化,指出周期变得更短、更剧烈,主要受到宏观经济冲击、极端天气事件和地缘政治冲突的影响。 适用人群:对全球经济趋势、大宗商品市场动态及其对不同经济体影响感兴趣的政策制定者、投资者、分析师及研究机构。 使用场景及目标:①帮助政策制定者评估全球经济增长放缓对大宗商品市场的影响,从而调整经济政策;②为投资者提供有关未来大宗商品价格走势的风险提示,以便进行投资决策;③协助分析师和研究机构深入理解疫情后大宗商品市场的周期特征,识别潜在的投资机会和风险。 其他说明:报告强调,全球经济增长放缓、贸易紧张加剧以及地缘政治不确定性是影响大宗商品价格的主要因素。此外,极端天气事件和能源转型也对农业和能源商品市场产生了深远影响。报告呼吁各方关注这些结构性变化,并采取相应的风险管理措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值