Iphone scrollview大小为零的子视图,即使加载的文本不是零

Iphone scrollview大小为零的子视图,即使加载的文本不是零,iphone,ios,objective-c,oop,Iphone,Ios,Objective C,Oop,我是objective C编程的新手,如果这个问题有一个简单的答案,请原谅。 我想创建一个比屏幕大的UIScrollview。为了能够将所有子视图适当地放置在主视图中,我尝试了中建议的技巧。 在这个大的UIScrollView中,我有几个子视图,如工具栏视图、UITextView、UIButtons和容器视图。 启动期间,我启动setupView,根据实际屏幕大小更新textview的帧大小。我设法在一个单独的nib文件中完成了这项工作,没有太多麻烦,但当我在故事板中尝试这项工作时,发生了一件奇

我是objective C编程的新手,如果这个问题有一个简单的答案,请原谅。 我想创建一个比屏幕大的UIScrollview。为了能够将所有子视图适当地放置在主视图中,我尝试了中建议的技巧。 在这个大的UIScrollView中,我有几个子视图,如工具栏视图、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;
}
有人能帮忙吗

提前谢谢


Julien

这可能是因为在视图中,子视图帧尚未完全初始化。相反,请尝试在viewController的此方法中调用您的方法:

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

请参阅此处的更多信息:

这可能是因为在ViewWill中,子视图框架尚未完全初始化。相反,请尝试在viewController的此方法中调用您的方法:

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

请参阅此处的更多信息:

它正在工作!超级的!非常感谢您的快速响应!我在发帖前已经查看了论坛,但显然没有使用正确的搜索词……我很高兴它对你有用。请向上投票并接受答案,以便关闭您的问题并将其从未回答区域中删除。嗨,我还有一个问题,与我的代码修改有关。当我这样做时,我注意到我不能再修改主视图的框架。在我完成设置后,它迫使我执行另一个
[self-loadSubviews]
方法,这实际上是撤销我的整个工作设置。。。有没有办法解决这个问题?关键是我想根据我是在3.5英寸还是4英寸屏幕上更改我的
UITextView
的大小。。。我应该为此使用autolayout,还是有其他方法?您应该尝试使用autolayout(大小取决于屏幕),并且永远不要弄乱主视图的框架。尝试另一种方法。如果您对UITextView的功能还有更多疑问,最好创建一个全新的问题!它起作用了!超级的!非常感谢您的快速响应!我在发帖前已经查看了论坛,但显然没有使用正确的搜索词……我很高兴它对你有用。请向上投票并接受答案,以便关闭您的问题并将其从未回答区域中删除。嗨,我还有一个问题,与我的代码修改有关。当我这样做时,我注意到我不能再修改主视图的框架。在我完成设置后,它迫使我执行另一个
[self-loadSubviews]
方法,这实际上是撤销我的整个工作设置。。。有没有办法解决这个问题?关键是我想根据我是在3.5英寸还是4英寸屏幕上更改我的
UITextView
的大小。。。我应该为此使用autolayout,还是有其他方法?您应该尝试使用autolayout(大小取决于屏幕),并且永远不要弄乱主视图的框架。尝试另一种方法。如果您对UITextView的功能还有更多疑问,最好创建一个全新的问题!