iOS Auto Layout intrinsicContentSize 内容大小

Posted Xiejunyi12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS Auto Layout intrinsicContentSize 内容大小相关的知识,希望对你有一定的参考价值。

intrinsicContentSize 内在内容大小

使用AutoLayout 时,视图内容的大小通过每个视图的 intrinsicContentSize 属性表达,它描述了在数据未经压缩或剪裁的情况下表达视图全部内容所需的最小空间。该属性源于每个视图所呈现内容的自然属性。

对于图像视图,内在内容大小与其呈现的图像大小相符。图像越大,需要的内容大小也越大。
对于按钮,内在内容的大小随着按钮的名称而变化(title)。

通过视图的内在内容大小,Auto Layout将视图框架尽可能地与其自然内容相匹配。无歧义的布局通常需要给每个坐标轴设置两个属性,当视图有一个内在内容大小时,则只需设置两个属性中的一个。

当改变了视图的内在内容时,需要调用 invalidateIntrinsicContentSize 方法,让AutoLayout 知道在下次布局时重新计算。

例子1:

#import "XJYLabel.h"
@implementation XJYLabel
- (instancetype)init 
    if (self = [super init]) 

    
    return self;

- (CGSize)intrinsicContentSize 
    return CGSizeMake(100, 100);

@end

例子2:

#pragma mark - Layout

// 如果原有的视图尺寸和现在的不相符,
- (void)layoutSubviews 
    [super layoutSubviews];
    _collectionView.frame = self.bounds;
    if (!CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) 
        [self invalidateIntrinsicContentSize];
    


- (CGSize)intrinsicContentSize 
    return _layout.collectionViewContentSize;


#pragma mark - Public methods

- (void)reload 
    [_collectionView reloadData];
    [self invalidateIntrinsicContentSize];
   

以上是关于iOS Auto Layout intrinsicContentSize 内容大小的主要内容,如果未能解决你的问题,请参考以下文章

iOS屏幕适配方案-Auto Layout

IOS 6和Auto Layout自定义按钮高度错误

iOS 开发实践之Auto Layout(From Vincent Sit)

iOS,自动布局autoresizing和auto layout,VFL语言

iOS 8 Storyboard Auto Layout 中的 UIImageView 拉伸

iOS Auto Layout UIView 绘制周期