我是客观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;
}
有人可以帮忙吗??
提前感谢!
于连
答案 0 :(得分:1)
这可能是因为在viewWillAppear中,子视图帧还没有完全初始化。相反,尝试在viewController的这个方法中调用你的方法:
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self setupView];
}
在此处查看更多信息:ScrollView created in storyboard initialized with frame 0,0,0,0