iOS布局渲染之UIView方法的调用时机详解

 更新时间:2018年07月01日 11:47:51   作者:windtersharp  
在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

前言

APP页面优化对小编来说一直是难题,最近一直在不断的学习和总结 ,发现APP页面优化说到底离不开view的绘制和渲染机制。本文将详细给大家介绍关于iOS布局渲染之UIView方法调用时机的相关内容,下面话不多说了,来一起看看详细的介绍吧。

一、约束

- (void)updateConstraints NS_AVAILABLE_IOS(6_0) NS_REQUIRES_SUPER;

何时触发如下所示:

1、initWithFrame时候调用,但是要求重写以下方法,并返回YES。

+ (BOOL)requiresConstraintBasedLayout NS_AVAILABLE_IOS(6_0);

2、标记为需要更新,下次drawing cycle自动调用。当约束改变时,下次render loop还会自动调用layoutSubviews(布局)

- (void)setNeedsUpdateConstraints NS_AVAILABLE_IOS(6_0);

3、如果有需要更新的标记,立即调用。当约束改变时,下次render loop还会自动调用layoutSubviews(布局)

- (void)updateConstraintsIfNeeded NS_AVAILABLE_IOS(6_0);

二、布局

- (void)layoutSubviews;

1、何时触发如下所示:

initWithFrame时候调用,但是rect的值不能为CGRectZero。

- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;

2、标记为需要布局,下次drawing cycle自动调用。

- (void)setNeedsLayout;

3、如果有需要布局的标记,立即调用。

- (void)layoutIfNeeded;

4、自己的frame发生改变时,约束也会导致frame改变。

@property(nonatomic) CGRect frame;

5、添加子视图或者子视图frame改变时,约束也会导致frame改变。

6、视图被添加到UIScrollView,滚动UIScrollView。

三、显示

- (void)drawRect:(CGRect)rect;

何时触发如下所示:

1、initWithFrame时候调用,但是rect的值不能为CGRectZero。

- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;

2、标记为需要显示,下次drawing cycle自动调用。

- (void)setNeedsDisplay;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • IOS 静态库和Framework区别

    IOS 静态库和Framework区别

    这篇文章主要介绍了IOS 静态库和Framework区别的相关资料,这里对动态库与静态库做比较,选择什么时候使用库文件,需要的朋友可以参考下
    2016-12-12
  • 如何在IOS上使用ReplayKit与RTC

    如何在IOS上使用ReplayKit与RTC

    这篇文章主要介绍了如何在IOS上使用ReplayKit 与 RTC,对IOS音视频感兴趣的同学,一定要看一下
    2021-04-04
  • ios实现app强制更新功能

    ios实现app强制更新功能

    本篇文章主要介绍了ios实现app强制更新功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • iOS自定义UIBarButtonItem的target和action示例代码

    iOS自定义UIBarButtonItem的target和action示例代码

    这篇文章主要给大家介绍了关于iOS自定义UIBarButtonItem的target和action的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • IOS之构造方法与自定义构造方法的区别与实现

    IOS之构造方法与自定义构造方法的区别与实现

    本篇文章主要介绍了构造方法以及自定义构造方法的实现,需要的朋友可以参考下
    2015-07-07
  • iOS中SQLite的操作方法

    iOS中SQLite的操作方法

    这篇文章主要为大家详细介绍了iOS中SQLite的操作方法,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • iOS中lebel特殊字符的自动换行问题解决

    iOS中lebel特殊字符的自动换行问题解决

    这篇文章主要给大家介绍了关于iOS中lebel特殊字符的实现不自动换行的相关资料,文中通过示例代码介绍的非常详细,对大家学习iOS具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-10-10
  • iOS自定义相机功能

    iOS自定义相机功能

    这篇文章主要为大家详细介绍了iOS自定义相机功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • iOS实现支持小数的星星评分组件实例代码

    iOS实现支持小数的星星评分组件实例代码

    程序中需要打分的功能,在网上找了几个,都不是很满意。所以自己动手实现了一个,下面这篇文章主要给大家介绍了关于利用iOS实现支持小数的星星评分组件的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • IOS ObjectiveC中的赋值与对象拷贝

    IOS ObjectiveC中的赋值与对象拷贝

    这篇文章主要介绍了IOS ObjectiveC中的赋值与对象拷贝的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-09-09

最新评论