使用Auto Layout导致调用addSubView时出现的问题
来源:互联网 发布:康辉旅游网站源码 编辑:程序博客网 时间:2024/05/17 05:55
今天在一个自定义的UITableViewCell中添加一个UIView的时候发现怎么都不显示添加的UIView,在stackoverflow上搜了一下才想起来自己把viewController的auto layout打开了, stackoverflow上的回答iOS Auto Layout - get frame size width ,一楼大概讲的就是auto layout加载的方式并且只有在auto layout之后才能获取self的frame,二楼也给出了解决方法在viewDidLayoutSubViews中写用到frame的代码或者干脆用最省事的方法关掉auto layout。
这里只是一段测试的代码,添加subview时应该写在layoutsubviews方法里面。
一开始找错了答案重写了initWithCoder发现可以显示添加的View但是返回的frame值有点问题,至于为什么就不太清楚了。
- (void)awakeFromNib { UIView *view = [[UIView alloc] init]; view.backgroundColor = [UIColor blackColor]; CGFloat x = 0; CGFloat h = 10; CGFloat w = self.frame.size.width; CGFloat y = self.frame.size.height - h; view.frame = CGRectMake(x, y, w, h); [self.contentView addSubview:view]; NSLog(@"awakeFromNib H:%f,W:%f",self.frame.size.height,self.frame.size.width);}-(void)setFrame:(CGRect)frame { [super setFrame:frame]; NSLog(@"setFrame H:%f,W:%f",frame.size.height,frame.size.width);}- (instancetype)initWithFrame:(CGRect)frame { NSLog(@"initWithFrame %f---%f",frame.size.height,frame.size.width); return [super initWithFrame:frame];}- (id)initWithCoder:(NSCoder *)aDecoder { NSLog(@"initWithCoder H:%f,W:%f",self.frame.size.height,self.frame.size.width); return [self initWithFrame:[self frame]];}
这是使用auto layout时的Log
initWithCoder H:0.000000,W:0.000000
initWithFrame 0.000000—0.000000
setFrame H:44.000000,W:320.000000
awakeFromNib H:44.000000,W:320.000000
setFrame H:44.000000,W:375.000000
setFrame H:44.000000,W:375.000000
0 0
- 使用Auto Layout导致调用addSubView时出现的问题
- Auto Layout和动画一起使用出现的问题
- addSubview导致的旋屏问题:shouldAutorotateToInterfaceOrientation方法不调用
- iOS Auto Layout的使用
- iOS Auto Layout的使用
- iOS Auto Layout的使用
- iOS Auto Layout的使用
- iOS Auto Layout的使用
- iOS Auto Layout的使用
- iOS Auto Layout的使用
- iOS Auto Layout的使用
- 使用[window addSubview ] 导致 UIView 移位的处理
- IE9父容器overflow:auto时,子容器状态更改导致滚动条下出现额外空间的问题探讨
- xcode中Auto Layout的使用
- Auto Layout - 使用总结
- Auto Layout 使用心得
- Auto Layout 使用心得
- Auto Layout 使用心得
- Linux:Ubuntu_14.04.2 搭建nginx服务器
- iOS开发笔记9--企业账号发布流程
- Python - pwntools
- 【hive内置基本数据类型】 和 【内置复合数据类型用法】
- iOS开发笔记10--App store最新审核标准(2015.3)公布
- 使用Auto Layout导致调用addSubView时出现的问题
- 我叫许大方
- 如何做一个简单的开放接口(4)-常见Handler的参考实现
- 基于Redis实现分布式Session
- Debian用apt-get 安装软件时出现的问题!
- 黑马程序员_Java基础(方法,数组)
- FCkEditor编辑器漏洞(IIS 6.0)
- 模版方法模式
- 题目2:MySQL----------Second Highest Salary