imageRectForContentRect,titleRectForContentRect,contentRectForBounds,imageRectForContentRect什么时候调用
UIButton的布局顺序细节
什么时候调用imageRectForContentRect,titleRectForContentRect,contentRectForBounds,imageRectForContentRect,也是调用时机。首先梳理清楚几个布局的规则:
- 改变view的size会触发layoutSubviews
- 改变view的x或y不会触发layoutSubviews
- 改变subview的size会触发superview的layoutSubviews
- 改变subview的x或y不会触发自己以及父视图的layoutSubviews
记住这几个布局时的调用顺序:
- layoutSubviews
- backgroundRectForBounds:
- contentRectForBounds:
- imageRectForContentRect:
- titleRectForContentRect:
特别的:
- 在UIButton初始化阶段会依次调用contentRectForBounds:,imageRectForContentRect:。这是在布局之前完成的。
- 改变title,image,background image都会来到进行绿色文字顺序的布局。但不会触发父视图的布局,因为UIButton的尺寸未变。
- 绿色文字区域的调用并不是一次完成。而是复杂的多次调用完成的。它的顺序是:3 -> 4 -> 3 -> 5 -> 3 -> 4
转注出:https://www.cnblogs.com/xiaobajiu/p/11774496.html
imageRectForContentRect,titleRectForContentRect,contentRectForBounds,imageRectForContentRect什么时候调用的更多相关文章
- iOS-UI-UI控件概述
以下列举一些在开发中可能用得上的UI控件: IBAction和IBOutlet,UIView 1 @interface ViewController : UIViewController 2 3 @p ...
- iOS-UI控件概述
IBAction和IBOutlet,UIView 1 @interface ViewController : UIViewController 2 3 @property(nonatomic, wea ...
- IOS之UI -- 按钮UIButton的细节
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- [iOS UI进阶 - 2.1] 彩票Demo v1.1
A.需求 1.优化项目设置 2.自定义导航栏标题按钮 3.多版本处理 4.iOS6和iOS7的适配 5.设置按钮背景 6.设置值UIBarButtonItem样式 code source: htt ...
- UIButton, KVC, KVO
按钮 自定义按钮:调整内部子控件的frame 方式1:实现titleRectForContentRect:和imageRectForContentRect:方法,分别返回titleLabel和imag ...
- iOS 网易彩票-3常见设置
Navigation导航设置 为了统一管理导航控制器,需要自定义导航控制器MJNavigationController,继承于UINavigationController.分别设置5个Navigati ...
- iOS-UI控件之UIButton
---恢复内容开始--- UIButton 既可以显示图片,又可以显示文字,还能随时调整内部位置 系统自带尺寸 storyboard内部调整UIButton属性 状态 监听按钮点击事件 凡是继承自UI ...
- HUD总结
HUD 指示器/HUD/遮盖/蒙板 半透明的指示器如何实现 指示器的alpha = 1.0; 指示器的背景色是半透明的 1. 创建颜色 直接创建对应的颜色 + (UIColor *)blackColo ...
- 黑马毕向东Java基础知识总结
Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记 侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...
随机推荐
- Java中标识符和变量的区别
1.标识符 在JAVA的组成部分中包括了对包.类.方法.变量等的起名,这些名字是要有一定的规则的: 标识符可以包含数字.字母.$._,但是不能以数字开头: 关键字不能用作标识符: 标识符是大小写敏感的 ...
- AI:为你写诗,为你做不可能的事
最近,一档全程高能的神仙节目,高调地杀入了我们的视野: 没错,就是撒贝宁主持,董卿.康辉等央视名嘴作为评审嘉宾,同时集齐央视"三大名嘴"同台的央视<主持人大赛>,这够不 ...
- Python之HTTP静态服务器-面向对象版开发
利用面向对象的思想完成HTTP静态Web服务器的开发. 主要思路如下: 1.抽象出一个服务器类 1.1 编写类的对象属性 1.2 编写类的方法 注意: 在进行请求资源路径判断时,需要确认请求路径中是否 ...
- Git 如何优雅地回退代码
前言 从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码.提交.合并等,更复杂的操作没有使用过, ...
- vue-socket.io使用教程与踩坑记录
全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/12018866.html,多谢,=.=~ (如果对你有帮助的话请帮我点个赞啦) 请先允许我狠狠吐个 ...
- luogu P2863 [USACO06JAN]牛的舞会The Cow Prom |Tarjan
题目描述 The N (2 <= N <= 10,000) cows are so excited: it's prom night! They are dressed in their ...
- (全国多校重现赛一)D Dying light
LsF is visiting a local amusement park with his friends, and a mirror room successfully attracts his ...
- Mybatis代码生成器Mybatis-Generator使用详解
前提 最近在做创业项目的时候因为有比较多的新需求,需要频繁基于DDL生成Mybatis适合的实体.Mapper接口和映射文件.其中,代码生成器是MyBatis Generator(MBG),用到了My ...
- [状态模式]实现stopwatch
1.模拟传统面向对象语言的状态模式实现 // Stopwatch类 状态机class Stopwatch { constructor() { this.button1 = null ...
- JS-常见数据结构
常见数据结构 这一章节我们将来学习数据结构的内容.经常会有人提问说:学习数据结构或者算法对于前端工程师有用么? 总的来说,这些基础学科在短期内收效确实甚微,但是我们首先不要将自己局限在前端工程师这点上 ...