У меня возникла странная ошибка при анимации пары просмотров в iOS. Моя цель - перейти от пользовательского «Split View». Вы можете посмотреть, что происходит в этом видео на YouTube: http://youtu.be/ZWbf2bQYMnsiOS UIView setFrame error error
Вы можете увидеть странный «удар» по значению Y UIImageView, и мне было интересно, как это исправить уже довольно давно.
Это интерфейс пользователя контроллера:
@interface VideoSharing_Pad : UIViewController
{
IBOutlet UIView *videoCallView;
IBOutlet UIImageView *imageView; //This is "inside" mediaView
IBOutlet UIView *mediaView;
CGRect mediaRect;
CGRect videoCallRect;
CGRect imageRect;
}
В viewDidLoad хранить оба вида делает:
//Get frames from XIB
mediaRect = mediaView.frame;
videoCallRect = videoCallView.frame;
imageRect = imageView.frame;
И это код, который выполняется, когда я хочу, чтобы перейти от Split View для в полноэкранном режиме:
- (IBAction)toggleFullScreen:(id)sender
{
if (iScreenMode == callAndShareMedia) {
CGRect fullScreenRect = CGRectMake(0, 0, 1024, 768);
CGRect dissapearRect = CGRectMake(0, - videoCallView.bounds.size.height, videoCallView.bounds.size.width, videoCallView.bounds.size.height);
[UIView animateWithDuration:1.0
delay:0.1
options: UIViewAnimationCurveEaseOut
animations:^{
[videoCallView setFrame:dissapearRect];
[imageView setFrame:fullScreenRect];
[mediaView setFrame:fullScreenRect];
}
completion:^(BOOL finished){
}];
iScreenMode = onlyShareMedia;
return;
}
else if (iScreenMode == onlyShareMedia)
{
[UIView animateWithDuration:1.0
delay:0.1
options: UIViewAnimationCurveEaseOut
animations:^{
[videoCallView setFrame:videoCallRect];
[mediaView setFrame:mediaRect];
[imageView setFrame:imageRect];
}
completion:^(BOOL finished){
}];
iScreenMode = callAndShareMedia;
return;
}
}
Я бы очень признателен за любую помощь, которую я могу получить. Большое спасибо!
это скриншот XIB:
, как вы можете видеть на скриншоте и .h файла, ImageView находится внутри UIView под названием mediaView, Другой UIView, videoCallView является один с тремя фиктивными картинками.
Я не совсем понимаю отношение 'videoCallView' и' mediaView' и 'imageView'. Это поможет сделать снимок экрана + аннотацию наложения, которая объясняет, какая область соответствует объекту представления. – barley
@barley это скриншот XIB: http://i.imgur.com/xl0PU.png, как вы можете видеть из скриншота и файла .h, imageView находится внутри UIView, называемого mediaView, другой UIView, videoCallView - это тот, у которого три фиктивных изображения. –