【问题标题】:XCode: Resize image use aspect ratio and move down elements below imageXCode:调整图像大小使用纵横比并向下移动图像下方的元素
【发布时间】:2017-09-21 08:47:47
【问题描述】:

当用户在 iPad 上改变方向时,我一直在调整图像大小。

我想调整横向图像的大小(纵横比)并向下移动该图像下方的所有行(视图)。

现在当旋转屏幕图像非常拉伸。

旋转屏幕时如何做负责任的设计?

对不起,我是 Xcode 的新手。

谢谢。

【问题讨论】:

    标签: ios xcode uiview xamarin.ios uiimageview


    【解决方案1】:

    您可以在 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
            });
        }
    

    【讨论】:

    • @DaleYY,我的回答对你有帮助吗?
    猜你喜欢
    • 2013-09-09
    • 2012-11-15
    • 2017-08-10
    • 1970-01-01
    • 2012-02-24
    • 2013-06-26
    相关资源
    最近更新 更多