UIScrollView自定义视图旋转问题

时间:2010-05-31 14:18:44

标签: objective-c uiview uiscrollview

我有一个带自定义视图的ScrollView。现在我有旋转的问题,视图在旋转后没有正确的帧位置/大小。

如何在旋转后调用CustomView进行重新定位并调整框架和内容的大小?!

- (void)setupPage
{
    NSUInteger nimages = 0;
    CGFloat cx = 0;
    for (; ; nimages++) {
        if (nimages == list.count) {
            break;
        }

        CustomStepView *stepView = [[CustomStepView alloc] initWithFrame:CGRectZero];
        stepView.tag = nimages;
        if([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait || [[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown) 
        {

            stepView.frame = CGRectMake(cx, 0.0 , 768.0f, 926.0f);
            cx += 768.0;
        }
        else
        {
            stepView.frame = CGRectMake(cx, 0.0 , 1024.0f, 670.0f);
            cx += 1024.0;
        }

        [scrollView addSubview:stepView];
        [stepView release];

    }

    self.pageControl.numberOfPages = nimages;

}

1 个答案:

答案 0 :(得分:0)

从它看起来,你的ScrollView中有很多子视图(自定义视图)。

首先,永远不要尝试使用UIDevice检测方向,苹果不建议这样做。 为了处理轮换,您已经提供了以下功能:“shouldAutorotateToInterfaceOrientation”

在此方法中,您可以简单地运行循环以检测滚动视图中存在的子视图,然后设置每个子视图的框架和大小。

这看起来像这样:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
   if(interfaceOrientation ==  UIInterfaceOrientationPortrait)
   {
     for(UIView *asubview in scrollView.subviews)
     {
        asubview.frame = "NEW FRAME";    
     }
   }
   else
   {
       asubview.frame = "NEW FRAME";
   } 
}

希望它对你有所帮助。尽管我知道这已被问到很久了:-) 干杯