我有一个带自定义视图的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;
}
答案 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";
}
}
希望它对你有所帮助。尽管我知道这已被问到很久了:-) 干杯