关于instrinsicContentSize, ContentHuggingPriority, ContentcompressionResistancePriority的理解


ios 关于intrinsic理解

最近由于项目的需要想给MBProgressHUD添加一个自定义的view, 结果花费了一两个小时也没添加上去,添加上去的view没有实际的大小,即使你给他设置了一个很大frame 也依然没有什么卵用,那么处于项目的紧急的情况只能先让切图的小姑娘帮忙给切一张背景图了,那么完成项目的需求之后回过头来去思考一下,为什么通过给它添加一个普通的自定义view就添加不上去呢?(主要我说的是VIew,而不是view的子类)那么仔细阅读源码,发现一句很重要的话 
The UIView (e.g., a UIImageView) to be shown when the HUD is in MBProgressHUDModeCustomView. 
The view should implement intrinsicContentSize for proper sizing. For best results use approximately 37 by 37 pixels. 
@property (strong, nonatomic, nullable) UIView *customView; * 注意到加粗的属性 . instrinsicContentSize 这是什么鬼?没见过呀,那么接下来就是探索的时间了 
* 其实啊 , instrinsicContentSize 翻译过来就是“固有大小”。首先想要了解几个与此相关的概念*

  • Content Hugging Priority 字面意思就是内容压缩优先级,实际上就是说阻止返回的view实际尺寸比instrinsicContentSize大的优先级
  • Content Compression Resistance priority 字面意思就是字面抗压缩优先级,实际上就是阻止view返回的实际尺寸比instrinsicContentSize小。

其实这都是autoLayout的属性,也就是说是布局属性,那么现在来说说contentInstrinsicSize的含义,就是说一个控件再不受外界影响的情况下,他自己有自己本来的大小,和button,label 等一样,我们都知道在label布局的时候我们只需要指定他的位置就可以了,这是因为只要给他text 他就会知道自己的大小。如果需要详细了解这三个属性,这里有两篇文章我感觉写的特别好:1. 只有百分之二十的人知道这三个属性哦 2.AutoLayout学习之理解intrinsicContentSize,Content Hugging Priority,Content Compression Resistance Priority

原文地址:https://www.cnblogs.com/wannaGoBoy/p/6606674.html