我有子類uiscrollview並使用initWithCoder來準備我所有子視圖的uiscrollview。我用下面的代碼來設置它:initWithCoder爲框架屬性返回0值
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
NSLog(@"%f", self.frame.size.height);
self.contentSize = CGSizeMake(5000, self.frame.size.height);
labelContainerView = [[UIView alloc] init];
labelContainerView.frame = CGRectMake(0, 0, self.contentSize.width, self.contentSize.height/2);
labelContainerView.backgroundColor = [UIColor yellowColor];
[self addSubview:labelContainerView];
}
但是,這可防止失敗,因爲self.frame屬性總是返回0值。它對我來說使用self.frame屬性是非常重要的,因爲我想使用故事板對scrollview的框架進行任何高度調整。
我已經嘗試使用xib文件而不是使用故事板的相同的東西,它工作正常。但在我的項目中,我不想使用xib文件。
如果有人能解釋我爲什麼在initWithCoder:方法中使用storyboard的時候會得到0值,那將會非常棒!如果使用storyboard如何實現這一目標?
PS:我注意到layoutSubviews方法的返回正確的幀信息,但
退房這樣的回答:http://stackoverflow.com/questions/12758782/how-can-i-set-the-size -U -view-init-with-storyboard/15892101#15892101 – AndrewCr 2013-04-09 02:11:42
似乎工作的一個技巧:http://stackoverflow.com/a/5837133/294884 – Fattie 2014-03-30 16:39:58