即使文本加载不为零,滚动视图大小为零的子视图

时间:2013-08-04 19:12:53

标签: iphone ios objective-c oop

我是客观C编程的新手,所以如果这个问题有一个简单的答案,请原谅。 我想创建一个比屏幕大小更大的UIScrollview。为了能够在主视图中正确放置所有子视图,我尝试了this post中建议的技巧。 在这个大型UIScrollView中,我有几个子视图,例如ToolbarView,UITextView,UIButtons和容器视图。 在启动期间,我启动setupView以根据实际屏幕大小更新textview的帧大小。我设法在一个单独的nib文件中执行此操作而没有太多麻烦,但是当我在故事板中尝试这个时,会发生一件奇怪的事情:UITextView(paperlist)被初始化并且文本被设置为它。但是,当我尝试获取帧大小时,会导致CGRect的大小为零。

下面是我写的代码片段:

- (void)viewWillAppear:(BOOL)animated
{
[super viewDidLoad];
[self setupView];
// Do any additional setup after loading the view.
}


#pragma mark update the view
- (void)setupView {
// first update the paperlist height in function of the screen size of the device used
CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;

CGRect newMainFrame = self.view.frame;
CGRect newPaperlistFrame = self.paperlist.frame;
newPaperlistFrame.size.height = [UIScreen mainScreen].bounds.size.height - KEYBOARD_LOWERBORDER - self.mainToolbar.bounds.size.height - statusBarHeight;

newMainFrame.size.height = self.mainToolbar.bounds.size.height + newPaperlistFrame.size.height + self.fullKeyboardView.frame.size.height;

self.view.frame = newMainFrame;
self.paperlist.frame = newPaperlistFrame;
}

有人可以帮忙吗??

提前感谢!

于连

1 个答案:

答案 0 :(得分:1)

这可能是因为在viewWillAppear中,子视图帧还没有完全初始化。相反,尝试在viewController的这个方法中调用你的方法:

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    [self setupView];
}

在此处查看更多信息:ScrollView created in storyboard initialized with frame 0,0,0,0