その上に小さな UIViewController を持つ UITextview があり、そのビューは UITextView です (スクリーンショットでは赤です)。小さな赤い textView は、その下の大きな textView のサブビューです。
これがどのように見えるかです。小さな textView は赤で、小さな正方形 (50 x 50 としましょう) の形をしています。画面の端をわざとカットしています。そんな位置付けです。
これは縦長です。デバイスが横向きに回転すると、小さな textView が左に移動して、大きな textView の上にならなくなりますが、サブビューのままです。そこで、小さな textView のフレームと同じサイズの新しい CGRect を作成し、原点の x 座標を変更します。次に、小さな textViews フレームを変更されたフレームに再割り当てします。方法は次のとおりです。
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation ==UIInterfaceOrientationLandscapeRight) {
CGRect smallFrame = self.smallTextView.view.frame;
smallFrame.origin.x -=20.0;
self.smallTextView.view.frame = smallFrame;
}
}
結果は次のとおりです。
明らかにこれは正しくありません。textView のフレーム サイズには触れていませんが、これらの属性は変更されています。奇妙なことに、サイズの寸法を NSLog すると、回転前と同じ 50 x 50 になります。
いくつかの観察:
- これは、小さな赤い textView が textView である場合にのみ発生します。そのビューを UIImageView に置き換えることができ、この問題は発生しません。
- これは別のUITextViewのサブビューであるため、これが起こっていると確信しています。なんで?どのように?全く分からない。
- 大きなスーパービュー UITextView がどのように回転しているかに問題があると考え始めており、どういうわけかサブビューの小さな赤い textView が何らかの形で影響を受けています。インターフェイスビルダーの「サブビューの自動サイズ変更」は、どちらのテキストビューでもチェックされていません。大きなスーパービューの textView は、IB で特定の幅と高さに制限されています。そのため、サイズは実際には変わりません。
これについて何か助けていただければ幸いです。私はそれを数日間見てきましたが、原因や解決策を特定することはできません.