作者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
推 kiii210:我好像也遇過...當時真的覺得被搞死 06/28 10:50
推 wudunglie2:歐歐 原來如此 我找了好久都找不原因呢 感謝~~!! 06/28 11:24
推 vampirewalk:IB裡面的auto layout有夠難用,根本就是一場災難 06/28 21:34
推 vampirewalk:個人建議用VFL或直接呼叫API比較好用 06/28 21:36
→ whitefur:我一開始用也卡了一陣子,後來上手覺得超好用 06/29 01:07
→ whitefur:尤其在綁定control間的相對位置 06/29 01:08
→ whitefur:不過要做動態的layout, 的確要用VFL或呼叫API 06/29 01:09