UIView
このスキームによると、 scrollView のサブビューであるのサブビューとして textView があります。
-UIScrollView *scrollView
-UIView *containerView
-UITextView *textView
-MKMapView *mapView
-UIImageView *imageView
回転中に問題が発生しました。縦から横への移行時に TextView が短縮され、回転前に表示されていたテキストの一部が表示されなくなりました。逆に、横向きから縦向きの作品まで。textView は完全にコードで作成され、IBOutlet はありません。
UITextView
高さは可変で、 contentSize は次のviewDidLoad
ように設定されます。
- (void)viewDidLoad
{
[super viewDidLoad];
//....
self.textView = [[UITextView alloc]init];
self.textView.backgroundColor =[UIColor clearColor];
CGRect frame;
frame = self.textView.frame;
frame.size.height= [self.textView contentSize].height;
[self.textView setContentSize:self.textView.contentSize];
self.textView.frame = frame;
NSLog(@"The contentSize of TextView is %@",NSStringFromCGSize
(self.textView.contentSize));
//The contentSize of TextView is {0, 161032}
//........
}
次のwillRotateToInterfaceOrientation:duration
ようになります。
-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if(deviceOrientation == UIInterfaceOrientationPortrait || deviceOrientation== UIInterfaceOrientationPortraitUpsideDown) {
CGSize containerSize = CGSizeMake(768, 5000);
self.scrollView.contentSize = containerSize;
self.containerView.frame = CGRectMake(0, 0, 768, 5000);
[self layoutPortrait];
}
else if (deviceOrientation== UIInterfaceOrientationLandscapeRight){
CGSize containerSize = CGSizeMake(1004, 5000);
self.scrollView.contentSize = containerSize;
self.containerView.frame = CGRectMake(0, 0, 1024, 5000);
[self layoutLandscape];
}
else if (deviceOrientation==UIInterfaceOrientationLandscapeLeft){
CGSize containerSize = CGSizeMake(1004, 5000);
self.scrollView.contentSize = containerSize;
self.containerView.frame = CGRectMake(0, 0, 1024, 5000);
[self layoutLandscape];
}
}
フレームの回転を処理する 2 つのメソッドは次のとおりです。
-(void) layoutPortrait{
//...
NSLog(@"the height of textView è %f", self.textView.contentSize.height);
//the height of textView è 161032.000000
self.textView.frame =CGRectMake(56, 490, self.viewImages.frame.size.width, self.textView.contentSize.height);
//.....
}
-(void) layoutLandscape{
//......
NSLog(@"The height of textView è %f", self.textView.contentSize.height);
/*The height of textView è 2872.000000
(This after rotation from portrait to landscape)*/
self.textView.frame = CGRectMake(170, 495, self.viewImages.frame.size.width, self.textView.contentSize.height);
//......
}
回転中に textView の高さを固定したままにしたい。UIImageView と MKMapView で動作します。