3

我必须UIScrollView显示更长的文本视图、字段和图像列表。在viewDidAppear我适当地设置了 contentSize 并且我还添加了这个代码,didRotateFromInterfaceOrientation以便UIScrollViewcontentSize 根据方向调整大小。

问题是,当视图第一次出现时UIScrollView没有响应(我无法滚动),但在旋转设备后didRotateFromInterfaceOrientation调用代码并且一切正常。(如果我以横向启动应用程序,我只能滚动一点以查看通常以纵向模式显示的内容,而不是扩展内容 - 忽略我定义的 scrollView)

代码是一样的viewDidAppeardidRotateFromInterfaceOrientation为什么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);
    }
}
4

2 回答 2

3

你最好改变contentSizein viewDidLayoutSubviews,它在出现改变方向时被调用。

但别忘了先打电话super

于 2013-04-11T08:15:06.767 回答
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)];

        }
    }

快乐编码。

于 2017-06-28T08:07:44.557 回答