作者whitefur (白毛)
看板MacDev
标题Re: [问题] frame bound 没有值?
时间Fri Jun 28 10:28:22 2013
把storyboard的autolayout关掉
frame就有值了
因为在autolayout下
各control的frame是由NSLayoutConstraint计算的结果
autolayout会在画面要画出来的时候才根据NSLayoutConstraint去计算frame
所以在viewDidLoad时self.view的subview是没有frame的
即便在此时你写了button.frame = CGRectMake(......);
最後在viewDidAppear的时候你去看button.frame还是会变成你在storyboard上设定的值
你可以在viewDidLoad, viewWillAppear, viewDidAppear都去看subview的frame
你会发现只有在viewDidAppear时才是你在storyboard上设定的值
autolayout是iOS6才有的东西
在排板上非常好用!
有机会再来分享一下最近使用的心得
想了解autolayout与原来的autosizing的差别可以跟着这篇图文并茂的教学实作看看
http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2
※ 引述《wudunglie2 (RAY)》之铭言:
: 在Mainstoryboard 在viewcontroller 里面 拉了
: 一个自定义的view
: 透过IBoutlet 连接上该view
: 接着在 viewdidload
: 尝试把该 view的frame 或者 bounds的值取出来
: 但是都是 0
: 请问这个是那里出错了呢?
: 也确定有走过
: -(id)initwithCoder:(NSCoder *)aDecoder
: {
: if((self = [super initwithCoder:aDecoder]))
: {
: [self testInit];
: }
: return self;
: }
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.248.107.168
1F:推 kiii210:我好像也遇过...当时真的觉得被搞死 06/28 10:50
2F:推 wudunglie2:欧欧 原来如此 我找了好久都找不原因呢 感谢~~!! 06/28 11:24
3F:推 vampirewalk:IB里面的auto layout有够难用,根本就是一场灾难 06/28 21:34
4F:推 vampirewalk:个人建议用VFL或直接呼叫API比较好用 06/28 21:36
5F:→ whitefur:我一开始用也卡了一阵子,後来上手觉得超好用 06/29 01:07
6F:→ whitefur:尤其在绑定control间的相对位置 06/29 01:08
7F:→ whitefur:不过要做动态的layout, 的确要用VFL或呼叫API 06/29 01:09