layoutSubviews总结

数字IC后端设计实现之Innovus POD V2 Flow性能优化全解析 本文深入解析了数字IC后端设计中的Innovus POD V2 Flow性能优化方案。该流程通过整合place_opt_design与clock_opt_design命令,实现了布局与时钟树的协同优化,有效提升了时序收敛效率、改善了设计密度与拥塞,并显著减少了迭代次数,是应对先进工艺复杂设计的关键利器。 阅读详情

原文地址:点击打开链接

今天跟旺才兄学习了一下UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。

上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据。

ipad横竖屏切换解决方案
2011年08月01日 星期一 10:09
由于ipad的横竖屏不同,所以好的应用,横竖屏的页面布局也不一样。那么就需要横竖屏的整体解决方案。先看一个横竖屏布局不一样的界面。

上面两张图是来自同一个界面的横竖版的截屏。可以看出,横竖版显示的内容相同,但是界面布局不同。要实现上述布局,主要是运用UIView中 layoutSubviews方法。当UIView设置为自动适配屏幕时,当用户旋转设备的时候,会调用layoutSubviews方法,我们只需重写 这个方法,然后判断用户屏幕的方向。在调整每个空间的位置即可。

下面是实现上述界面的最简单的原型:

首先分析可以知道左面是图片,右面是一个图片加文字的视图。下面就实现一个左面视图右面是一个图加一段字的事例。
事例的截图如下:

其中右面的文字和绿色部分是用一个子视图封装的。
整个布局是我在主视图中添加了一个ContentView视图,在ContentView视图中添加了一个ArticleView视图。
其中ArticleView和ContentView的xib文件都打开了


[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. 在ContentView中重写layoutSubviews方法,然后根据stausbar的方向判断当前视图的横竖屏。具体代码:  
  2. -(void)layoutSubviews{   
  3. [super layoutSubviews];   
  4. UIDeviceOrientation interfaceOrientation=[[UIApplication sharedApplication] statusBarOrientation];   
  5. if (interfaceOrientation == UIDeviceOrientationPortrait || interfaceOrientation == UIDeviceOrientationPortraitUpsideDown) {   
  6. //翻转为竖屏时   
  7. [self setVerticalFrame];   
  8. }else if (interfaceOrientation==UIDeviceOrientationLandscapeLeft || interfaceOrientation == UIDeviceOrientationLandscapeRight) {   
  9. //翻转为横屏时   
  10. [self setHorizontalFrame];   
  11. }   
  12. }  
  13.   
  14. -(void)setVerticalFrame   
  15. {   
  16. NSLog(@"竖屏");   
  17. [titleLable setFrame:CGRectMake(283, 0, 239, 83)];   
  18. [leftView setFrame:CGRectMake(38, 102, 384, 272)];   
  19. [rightView setFrame:CGRectMake(450, 102, 282, 198)];   
  20. }  
  21.   
  22. -(void)setHorizontalFrame   
  23. {   
  24. NSLog(@"横屏");   
  25. [titleLable setFrame:CGRectMake(183, 0, 239, 83)];   
  26. [leftView setFrame:CGRectMake(168, 122, 384, 272)];   
  27. [rightView setFrame:CGRectMake(650, 122, 282, 198)];   
  28. }  
  29.   
  30. 在具体的横竖屏方法中,从新设置各个组件的坐标即可。  
  31.   
  32. 接下来在ContentView中添加ArticleView视图。  
  33. -(id)initWithCoder:(NSCoder *)aDecoder   
  34. {   
  35. if ((self = [super initWithCoder:aDecoder])) {  
  36.   
  37. NSArray *arrayContentView =[[NSBundle mainBundle] loadNibNamed:@"ArticleView" owner:self options:nil];   
  38. rightView=[arrayContentView objectAtIndex:0];   
  39. [self addSubview:rightView];   
  40. }   
  41. return self;   
  42. }  
  43.   
  44. 由于我用的是xib,所以初始化方法为initWithCoder,在这个中添加新的视图。  
  45.   
  46. 同样在ArticleView中设置横竖屏相应空间的坐标即可。  
  47. -(void)layoutSubviews{   
  48. [super layoutSubviews];   
  49. UIDeviceOrientation interfaceOrientation=[[UIApplication sharedApplication] statusBarOrientation];   
  50. CGRect rect=self.frame;   
  51. rect.size.width=282;   
  52. rect.size.height=198;   
  53. [self setFrame:rect];   
  54. if (interfaceOrientation == UIDeviceOrientationPortrait || interfaceOrientation == UIDeviceOrientationPortraitUpsideDown) {   
  55. //翻转为竖屏时   
  56. [self setVerticalFrame];   
  57. }else if (interfaceOrientation==UIDeviceOrientationLandscapeLeft || interfaceOrientation == UIDeviceOrientationLandscapeRight) {   
  58. //翻转为横屏时   
  59. [self setHorizontalFrame];   
  60. }   
  61. }  
  62.   
  63. -(void)setVerticalFrame   
  64. {   
  65. NSLog(@"竖屏");   
  66. [contentView setFrame:CGRectMake(12, 6, 250, 125)];   
  67. [textLable setFrame:CGRectMake(50, 139, 182, 39)];   
  68. }  
  69.   
  70. -(void)setHorizontalFrame   
  71. {   
  72. NSLog(@"横屏");   
  73. [contentView setFrame:CGRectMake(12, 6, 106, 158)];   
  74. [textLable setFrame:CGRectMake(135, 11, 147, 39)];   
  75. }  

@layoutSubviews何时调用的问题

layoutSubviews何时调用的问题,这个方法是当你需要在调整subview的大小的时候需要重写(我这个翻译不严谨,以下是原文:You should override this method only if the autoresizing behaviors of the subviews do not offer the behavior you want.),但有时候经常指望它被调用的时候没被调用,不希望它被调用的时候被调用了,搞的很上火。根据国外社区一个人帖子,做了总结性翻译。

layoutSubviews在以下情况下会被调用:

1、init初始化不会触发layoutSubviews
2、addSubview会触发layoutSubviews
3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
4、滚动一个UIScrollView会触发layoutSubviews
5、旋转Screen会触发父UIView上的layoutSubviews事件
6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

SolidWorks2020详细步骤安装教程 1、在安装软件前请断开网络连接,需要安装.NETFramework3.5和4.0,最后还要确保把之前安装的旧版本完全卸载,以管理员身份运行SolidWorks_Flexnet_Server\server_remove.bat,然后等到服务“SolidWorksFlexnet服务器”将被删除。12、先不要运行软件,找到_SolidSQUAD_文件夹,将文件夹“ProgramFiles\SOLIDWORKSCorp”中的所有破解文件复制替到“ProgramFiles\SOLIDWORKSCorp”目录下; 阅读详情

相关推荐

伯德图逆向工程:用MATLAB从扫频数据中提取系统特性的5个关键步骤

本文详细介绍了使用MATLAB从扫频数据中提取系统特性的5个关键步骤,包括数据预处理、频响特性提取、相位解缠绕、系统特性反演和结果验证。通过伯德图逆向工程技术,工程师可以有效分析黑箱系统的频率响应特性,解决噪声干扰和相位跳变等实际问题,提升控制系统调试效率。

weixin_29081163的博客 196

layoutSubview[view]的作用和作用机制

概述 在UIView里面有一个方法layoutSubviews,这个方法定义如下 //覆盖点。由layoutifrequired自动调用。从iOS 6.0开始,当使用基于约束的布局时,基本实现应用基于约束的布局,否则它什么也不做。 调用机制 1、init初始化不会触发layoutSubviews 但是是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,也会触...

weixin_44824650的博客 1006

某银行大数据分析平台之云原生架构

软考架构师论文

doudoudouy的博客 768

IOS-layoutSubviews方法的调用时机

IOS-layoutSubviews方法的调用时机前言layoutSubviews调用时机setNeedsLayout 和 layoutIfNeededaddSubview改变view的size大小需要注意点 前言 最近在开发项目的过程中,修改以前的布局代码,之前单独设置上、下、宽度、高度,的值是正常,但是我改成设置空间的frame之后,程序运行发生了死循环, 最后找到子控件的layoutSubviews方法中设置自身的高度,然后再父视图,我又设置了该控件的frame。 子控件的代码: 在运行之后,展示该

yong_19930826的博客 4784

Cartographer从安装到实战:手把手教你运行2D/3D建图与定位

本文提供了一份详尽的Cartographer从零安装到实战应用的完整指南。内容涵盖环境准备、依赖编译、源码构建等关键步骤,并手把手指导读者运行2D/3D官方数据集进行建图与定位测试。文章深入解析了参数配置与自定义数据适配方法,帮助开发者快速掌握这一强大的实时同步定位与建图工具,并将其应用于机器人导航与自动驾驶等实际场景。

rice5的博客 949

Qt Creator菜单栏消失的终极修复指南:从快捷键冲突到设置恢复

本文详细解析了Qt Creator菜单栏消失的常见原因及修复方法,包括快捷键冲突排查、配置文件重置和界面模式切换等解决方案。特别针对Qt开发者遇到的菜单栏显示问题,提供了从简单快捷键操作到深度配置修改的全方位指南,帮助用户快速恢复Qt Creator的正常使用。

weixin_27240351的博客 338

layoutSubviews理解

但需要注意的是,`layoutSubviews` 方法是在布局计算阶段被调用的,视图的绘制则是在 `drawRect:` 方法中进行的,这两个方法的调用时机有所不同。`**: 当我们手动调用了 `setNeedsLayout` 或 `layoutIfNeeded` 方法时,系统会标记视图需要重新布局,最终会触发 `layoutSubviews` 的调用。总结来说,`layoutSubviews` 方法的调用时机通常可以认为是在视图的布局计算完成后,确保视图及其子视图的尺寸和布局是最新的。

jzfjay的专栏 553

基于STM32的汽车主门电动窗开关系统设计方案

以下是基于 STM32CubeMX 和 HAL 库的示例代码,可实现基本的功能。

weixin_42300449的博客 995

UIView的layoutSubview方法什么时候会被调用

大部分iOS设备的vSync信号产生的周期是16ms一次,这是layoutSubView会被异步调用的底层原因。很多人习惯重写UIView的layoutSubview方法,在里面写View的布局代码,期望视图在数据发生变化,或系统主题改变时,页面的布局能够执行同样的代码逻辑,保证最终展示结果符合预期。layoutSubView方法在当前消息循环中被立刻调用,对layoutSubView方法的调用是会延迟到下一个或更靠后的消息循环中去。2. 调用UIView的addSubview方法。

老猿的自留地 589

C++如何实时监测另一个进程是否已经退出?(附源码)

调用WaitForSingleObject实时监测目标进程是否已经退出

dvlinker的技术专栏 8275

matlab SAR图像的多视滤波

单视复数数据(Single Look Comple)是原始的最高分辨率数据,但是从单个像元散射的雷达回波信号的相干叠加,导致强度信息有很多噪声。SAR的多视处理是对SLC数据方位向和/或距离向做平均,得到的结果是多视后的强度数据。多视处理可以提高SAR图像的信噪比,有效抑制斑点噪声,但是会降低方位分辨率。

点云侠的博客 534

深入解析iOS中的layoutSubviews方法

在iOS开发中,是UIView类的一个关键方法,它在视图的子视图需要重新布局的时候被调用。这个方法提供了一个理想的时机,让我们有机会调整和优化视图的布局。的调用时机使得它非常适合用于实现一些自定义的动画效果。通过在布局调整中加入动画,我们可以创建出更加生动和流畅的用户体验。通过本文的介绍,我们深入了解了iOS开发中一个重要的布局方法——。它不仅为我们提供了优化UI布局的便捷途径,还在处理动态数据和自定义动画效果方面展现了强大的应用潜力!

技术研究中心 1275

YOLOv11改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 1496

layoutSubviews

1 layoutSubviews 是UiView 的属性方法   调用情况,以下简称 ls 方法   (a) init 方法不会调用   initwithFrame 会调用(frame 不为CGRectZero)  例如: _myView = [[MyView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];// 调用 _myVi

1133

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

layoutSubviews 用法

layout用法 It’s important to optimize any UIView layoutSubviews method you create, as it can be frequently called, and has the potential for creating recursion (triggering a setNeedsLayout fr

禚来强(亿刀) 的iphone开发专栏--我们 一群 热爱 移动开发,如果你也是,就加入我们。 2727

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

layoutSubViews

addSubview会触发layoutSubviews,但view的frame是0时不会掉用 设置view的Frame会触发layoutSubviews,前提是frame的值设置前后发生了变化(view的with,height发现变化才会触发layoutSubviews,original. x ,original. y变化不会触发layoutSubviews) 1.直接调用[self setNee...

qq_44865905的博客 405

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

layoutSubviews,setNeedsLayout和layoutIfNeeded

学习:股沟时看到的其他知识 layoutSubviews layoutSubviews方法的作用:对自己subviews重写进行布局 layoutSubviews执行的时间点: 1.当view的frame发生改变的时候,所以initwithframe也会触发 2.有子视图加入时,addSubView 3.直接调用LayoutSubViews 4.滑动UIScrollView的时候 5.旋转...

yanPingWang_8的博客 381

关于 UIView 的 layoutSubviews 方法

关于 UIView 的 layoutSubviews 方法UIKit 的 UIView 是一个非常重要的类,几乎每个尝试 iOS 开发的程序员都会用到它。UIView 本身实现了 Composite Pattern,所以一个应用的界面最终可以由一群树状组合的 UIView 来组合而成——在这棵 UIView 树的最顶部,是继承于 UIView 的 UIWindow 实例,然后是由 UIWindow

欢迎来到Jack的程序世界 877

layoutSubViews 布局总结

首先明确两个概念: UIWindow 对象        : 整个程序中视图层次结构中最顶层,充当一个容器类。UIViewController 对象 :viewController 中一个 view属性是 view层次结构中rootView,可以添加 view构建复杂的视图结构,通过生命周期方法loadView、viewDidLoad、viewWillAppear 等控制视图声明周期,因

u012503217的专栏 2137

解析LayoutSubviews

解析LayoutSubviews 原博:http://www.cnblogs.com/YouXianMing/p/3897543.html 从百度上搜索了一下layoutSubviews的用处,以下是搜索的结果,当然,笔者是会一一验证的. 1、init初始化不会触发layoutSubviews 2、addSubview会触发layoutSubviews 3、设置vie

catsmen的博客 410

layoutsubviews原理总结

1.和layOut机制相关的方法    - (CGSize)sizeThatFits:(CGSize)size     - (void)sizeToFit     - (void)layoutSubviews 这个方法,默认没有做任何事情,需要子类进行重写     - (void)layoutIfNeeded  如果,有需要刷新的标记,立即调用layoutSubviews进

花露朝阳的专栏 651

layoutSubviews解析

1.layoutSubviews的触发 1、 init初始化不会触发layoutSubviews 2、 addSubview会触发layoutSubviews 3、 设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化 4、 滚动一个UIScrollView会触发layoutSubviews 5、 旋转Screen

陈凯的博客 506

iOS layoutSubviews 调用

在初始化时,使用init和-(instancetype)initWithFrame:(CGRect)frame,但是,在调用时是有系统区分的,iOS 11.0以下,调用init 和-(instancetype)initWithFrame:(CGRect)frame 当frame为CGRectZero是不会调用的, 在调用addSubView时,这个跟添加的subView尺寸大小没有关系。 改变...

ioszhanghui的博客 1151
上一篇: 提示框MBProgressHUD
下一篇: iOS开发之保存图片到手机相册
SMY_API
博客等级 码龄13年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值