当横向模式出现方向时,我希望将presentview及其内容放在滚动视图上

时间:2013-01-29 10:27:05

标签: objective-c ios6 uiscrollview xcode4.5

当我从纵向模式切换到横向模式时,视图应该广泛扩展,但长度应该相同并且在滚动视图中,这样当我滚动时,应显示完整的内容:

if (([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeLeft) ||
    ([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeRight))
{
    UIScrollView *scrollView=[[UIScrollView alloc] init];
    UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 480, 480)];
    view1 = self.view;
    [scrollView addSubview:view1];
    scrollView.frame = CGRectMake(0, 0, 480, 480);
    scrollView.contentSize = CGSizeMake(480, 480);
    scrollView.delegate = self;
    scrollView.alwaysBounceVertical = YES;
    [self.view addSubview:scrollView];
}

2 个答案:

答案 0 :(得分:0)

请更新您的问题,例如更多信息 - 什么是和不工作?不要将更新添加为评论,请编辑您的问题。

在您现有的代码中,至少这是错误的/困惑的:

 UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 480, 480)];
 view1 = self.view;

您正在为第一行中的新视图指定一个指针,然后将其重新分配给第二行中的现有self.view。然后在这里:

    [self.view addSubview:scrollView];

您要将包含内容视图的滚动视图添加到同一内容视图中。那不行。

作为一个更清洁的解决方案,为什么不为两个方向设置scrollview / subview组合。然后当你旋转时,你只需要改变你的scrollview的内容。

对于正常的直立方向:

            self.scrollview.contentSize = self.scrollview.bounds.size;

对于风景:

              self.scrollview.contentSize =
         CGSizeMake(self.scrollView.bounds.size.width, self.contentView.bounds.size.height 

(假设您的内容位于scrollView中包含的名为contentView的视图中)

您应该能够让contentOffset在故事板中为两个方向正常工作,但如果没有,您可以在代码中为每个方向设置它。

答案 1 :(得分:0)

if(([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeLeft) || ([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeRight)) { 
UIScrollView * scrollView=[[UIScrollView alloc] init]; UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 480, 480)]; 
view1 = self.view; [scrollView addSubview:view1]; scrollView.frame = CGRectMake(0, 0, 480, 480);           
scrollView.contentSize = CGSizeMake(480, 480); scrollView.delegate = self; 
scrollView.alwaysBounceVertical = YES; [self.view addSubview:scrollView]; 
}