我有子类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