【发布时间】:2017-09-21 08:47:47
【问题描述】:
当用户在 iPad 上改变方向时,我一直在调整图像大小。
我想调整横向图像的大小(纵横比)并向下移动该图像下方的所有行(视图)。
现在当旋转屏幕图像非常拉伸。
旋转屏幕时如何做负责任的设计?
对不起,我是 Xcode 的新手。
谢谢。
【问题讨论】:
标签: ios xcode uiview xamarin.ios uiimageview
当用户在 iPad 上改变方向时,我一直在调整图像大小。
我想调整横向图像的大小(纵横比)并向下移动该图像下方的所有行(视图)。
现在当旋转屏幕图像非常拉伸。
旋转屏幕时如何做负责任的设计?
对不起,我是 Xcode 的新手。
谢谢。
【问题讨论】:
标签: ios xcode uiview xamarin.ios uiimageview
您可以在 Xcode 中使用委托 viewWillTransitionToSize:withTransitionCoordinator: 或在 Xamarin.iOS 中使用 ViewWillTransitionToSize 在旋转屏幕时调整视图大小。
在 Xcode 中使用 Objective-C 的示例代码:
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
// Code here will execute before the rotation begins.
// Equivalent to placing it in the deprecated method -[willRotateToInterfaceOrientation:duration:].
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
// Place code here to perform animations during the rotation.
// You can pass nil for this closure if not necessary.
// Reorganize views, or move child view controllers.
if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
//Update UI
}
if (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) {
//Update UI
}
}completion:^(id<UIViewControllerTransitionCoordinatorContext> context){
// Code here will execute after the rotation has finished.
// Equivalent to placing it in the deprecated method -[didRotateFromInterfaceOrientation:].
// Do any cleanup, if necessary.
}];
}
Xamarin.iOS 中的 C# 示例代码:
public override void ViewWillTransitionToSize(CGSize toSize, IUIViewControllerTransitionCoordinator coordinator)
{
base.ViewWillTransitionToSize(toSize, coordinator);
coordinator.AnimateAlongsideTransition((IUIViewControllerTransitionCoordinatorContext) => {
if (UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.Portrait || UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.PortraitUpsideDown)
{
//Update UI
}
if (UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeLeft|| UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeRight)
{
//Update UI
}
}, (IUIViewControllerTransitionCoordinatorContext) => {
//Transition Completion
});
}
【讨论】: