XCode:调整图像大小使用纵横比并向下移动图像下方的元素

Posted

技术标签:

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

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

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

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

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

对不起,我是 Xcode 的新手。

谢谢。

【问题讨论】:

【参考方案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,我的回答对你有帮助吗?

以上是关于XCode:调整图像大小使用纵横比并向下移动图像下方的元素的主要内容,如果未能解决你的问题,请参考以下文章

在不保持纵横比的情况下使用 mogrify 调整图像大小

使用 Python - 如何在不超过原始图像大小的情况下调整裁剪图像的大小以满足纵横比

调整图像大小并裁剪为新的纵横比

使用“Vstack”将图像大小调整为屏幕宽度,同时保持纵横比

调整图像大小以保持纵横比并使纵向和横向图像尺寸完全相同?

调整图像大小保持纵横比