我有一个UIScrollView
来显示更长的文字视图,字段和图片列表。在viewDidAppear
我正确设置了contentSize,我还将此代码添加到didRotateFromInterfaceOrientation
,以便UIScrollView
contentSize根据方向调整大小。
问题是当视图第一次出现时UIScrollView
没有响应(我无法滚动),但在旋转设备后,didRotateFromInterfaceOrientation
中的代码被调用,一切正常。 (如果我以横向方式启动应用程序,我只能滚动一点,看看在纵向模式下通常显示的内容而不是扩展内容 - 忽略我定义的scrollView)
viewDidAppear
和didRotateFromInterfaceOrientation
中的代码相同,那么为什么scrollView
仅在轮换后响应?任何帮助表示赞赏。
两种方法中NSLog
消息的输出相同。
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
- (void) viewDidAppear:(BOOL)animated{
//If not an iPad set the scrollview to allow scrolling of view
if (!([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)) {
self.scrollView.contentSize= CGSizeMake(self.view.frame.size.width,1000);
[self.scrollView setUserInteractionEnabled:YES];
}
if(self.scrollView.userInteractionEnabled){
NSLog(@"DEBUG scrollview height : %f",self.scrollView.contentSize.height);
NSLog(@"DEBUG scrollview width : %f",self.scrollView.contentSize.width);
}
}
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
//If not an iPad set the scrollview
if (!([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)) {
self.scrollView.contentSize= CGSizeMake(self.view.frame.size.width,1000);
}
if(self.scrollView.userInteractionEnabled){
NSLog(@"DEBUG scrollview height : %f",self.scrollView.contentSize.height);
NSLog(@"DEBUG scrollview width : %f",self.scrollView.contentSize.width);
}
}
答案 0 :(得分:3)
您最好更改contentSize
中的viewDidLayoutSubviews
,在更改方向时显示和时会调用。{/ p>
但请不要忘记先致电super
!
答案 1 :(得分:1)
嘿请试试这段代码我认为你的问题是用这段代码解决的。
尝试使用didRotate方法获取您的设备方向是横向或纵向。并根据它设置框架。
- (void)viewDidAppear:(BOOL)animated {
if (!([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)) {
self.scrollView.contentSize= CGSizeMake(self.view.frame.size.width,1000);
[self.scrollView setUserInteractionEnabled:YES];
} else {
[_scrollView setScrollEnabled:YES];
_scrollView.contentSize = CGSizeMake(_scrollView.frame.size.width, 2320);
}
if(self.scrollView.userInteractionEnabled){
NSLog(@"DEBUG scrollview height : %f",self.scrollView.contentSize.height);
NSLog(@"DEBUG scrollview width : %f",self.scrollView.contentSize.width);
} }
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
if (fromInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
[_scrollView setContentSize:CGSizeMake(736, 1000)];
} else {
[_scrollView setContentSize:CGSizeMake(414 , 1200)];
}
}
快乐编码。