我正在使用啓用分頁的UIScrollView,並且下面的代碼向其添加子視圖(核心圖表)。UIScrollView,分頁和旋轉:旋轉後第二個視圖未正確對齊
視圖之間的水平滾動正常工作。 但是,當顯示第二個視圖,然後將從橫向模式旋轉到縱向模式時,第二個視圖部分向右移動,第一個視圖的右側部分顯示在左側,因此「破壞」分頁模式。
可以幫助我有這些問題請問?我嘗試了很多選擇,但找不到我的錯誤。非常感謝!
這是我的iPad屏幕的外觀與第二視圖旋轉爲縱向模式後:
:
這是我的viewDidLoad方法:
- (void)viewDidLoad {
self.scrollView.contentSize = CGSizeMake(768 * 2, 400);
chart1 = [[CPTGraphHostingView alloc]initWithFrame:CGRectMake(0, 0, 768, 400)];
chart2 = [[CPTGraphHostingView alloc]initWithFrame:CGRectMake(768, 0, 768, 400)];
self.scrollView.autoresizesSubviews = NO;
chart1.autoresizesSubviews = YES;
chart2.autoresizesSubviews = YES;
self.scrollView.contentOffset = CGPointZero;
self.scrollView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth ;
chart1.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth ;
chart2.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth ;
[self.scrollView addSubview:chart1];
[self.scrollView addSubview:chart2];
}
這是我如何實現ented旋轉:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
if (UIDeviceOrientationIsPortrait(fromInterfaceOrientation)) {
self.scrollView.contentSize = CGSizeMake(704 * 2, 400);
chart1.frame = CGRectMake(0, 0, 704, 400);
chart2.frame = CGRectMake(704, 0, 704, 400);
}
else {
self.scrollView.contentSize = CGSizeMake(768 * 2, 400);
chart1.frame = CGRectMake(0, 0, 768, 400);
chart2.frame = CGRectMake(768, 0, 768, 400);
}
}
難道是旋轉後發生扭曲第二個視圖的大小(contentSize的減少)?我相信第二個視圖應該在旋轉後向左移動一定的像素量。我怎麼能把這個輪換代碼?有任何想法嗎?謝謝,ale84! – AlexR 2012-03-07 22:15:59
您是否嘗試按照我的建議在didRotation中設置contentOffset? – ale84 2012-03-07 22:52:57
我試着設置contentOffset滾動到相應的視圖的開始,它的工作原理。但是,在我看來,這是一個解決方法。沒有更優雅的版本來支持分頁和旋轉嗎? – AlexR 2012-03-08 19:18:02