ページ付けのあるスクロールビューがあります。viewDidLoadで、現在の向きが横向きかどうかを確認し、コンテンツサイズの高さを440に設定します
if (UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
{
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages,340)];
}
else if (UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation]))
{
[scroll setFrame:CGRectMake(0,0,480,480)];
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages, 440)];
}
すべてが正常に機能しますscrollviewはスムーズにスクロールし、斜めのスクロールはありません。
しかし、向きが変わると、
scrollviewのフレームとcontentsizeを再度設定する必要があり、次のように設定しています。
-(void)orientationChanged:(id)object
{
if(UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
{
self.scroll.frame = [[UIScreen mainScreen]bounds];
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages, 340)];
}
else
{
self.scroll.frame = CGRectMake(0,0,480,480);
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages, 600)];
}
}
横向きモードでコンテンツサイズの高さを600まで設定する必要がある理由がわかりませんが、それでも十分ではありません。そしてそれはscrollviewが斜めにスクロールし始めるというもう1つの問題を追加しますが、それはとても奇妙に見えるので私は望んでいません。誰かが私がどこで何が欠けているのかを理解するのを手伝ってもらえますか?
scrollviewの自動サイズ変更マスクを次のように設定しました
[scroll setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleHeight];
しかし、それを変更しても役に立ちません。