当前位置: 首页 > 知识库问答 >
问题:

旋转时更改图像尺寸

凌轶
2023-03-14

我有一个名为sampleImage的图像,我试图沿着x轴和y轴拉伸它,如下所示,当它处于横向时,它根本不起作用

 override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)
  {
   if (UIDevice.current.orientation == UIDeviceOrientation.portrait)
    {
     sampleImage.frame = CGRect(x: 0, y: 0, width: 220, height: 120)
    }
   else
    {
    sampleImage.frame = CGRect(x: 0.2, y: 0.2, width: 220, height: 120)
    }
 }

然后,我在viewDidLayoutSubviews()中做了如下操作,

override func viewDidLayoutSubviews() {

    super.viewDidLayoutSubviews()

if (UIDevice.current.orientation == UIDeviceOrientation.portrait)
        {
         sampleImage.frame = CGRect(x: 0, y: 0, width: 220, height: 120)
        }
else
        {
        sampleImage.frame = CGRect(x: 0.2, y: 0.2, width: 220, height: 120)
        }
     }

如果设备在横向中,这是有效的,但是一旦您将其旋转到纵向并返回,所有更改都将消失。如何确保这些尺寸在旋转时保持不变?

共有1个答案

金钧
2023-03-14

基本上,这都是关于约束的。解决问题的第一种方法是处理设备旋转(好的so答案),并通过setNeedSupdateConstructions(另一个好的so答案)手动更改它。这种方式适用于带有UI和约束的复杂更改的大屏幕。在您的情况下,最好使用特定常量作为基于设备方向的约束,该约束可以在情节提要中设置。

因此,请遵循以下步骤:

将等高和等宽约束设置到UIImageView,然后双击指定宽度等于120的约束:

打开查看方式:iPhone 底部栏:

选择右侧的特定设备和横向方向,然后在右侧面板的Constant之前点击

它将根据所选设备和方向自动设置右侧宽度和高度,因此您只需输入这种情况下的常数。运行项目并查看结果。

肖像:

景观:

请注意,也不要忘记不同的设备可能有不同的大小类别(紧凑x紧凑、紧凑x常规等),因此您可能需要添加更多常量来处理此问题(请参阅文章底部的表格)。

最后,您通过使用故事板而不是以编程方式解决了问题。优点-您的代码没有长大,也不对UI的事情负责,缺点-您应该将常量添加到您想要使用的每个大小的类中。

 类似资料:
  • 问题内容: 我想找出悬停时如何制作 旋转或旋转的图像 。我想知道如何在以下代码上使用 CSS 模仿该功能: 问题答案: 您可以将CSS3过渡与一起使用,以 在悬停时旋转图像 。 旋转图像:

  • 我正在用Java制作简单的图像编辑器。我的问题是,当我旋转被裁剪的图像时,我将尝试在图像上显示它: 轮换前http://i.imgur.com/KjtHslb.jpg 经过45度http://i.imgur.com/SKOEFP7.jpg 旋转90度后,i[dot]imgur[dot]com/4NrABIA.jpg 看起来 JPanel 将旋转图像裁剪为原始图像的大小,我不知道为什么:/所以我在寻

  • 我正在努力创建一个带有不同尺寸图像的放大器转盘。我想将旋转木马中的图像缩放到固定高度 文档中提供的示例都具有相同的宽度/高度。 我试着省略了amp img元素的宽度 我已经创建了一个js提琴来向您展示我所拥有的 https://jsfiddle.net/ag38afa7/ 编辑: 风格和文档不一致还是我不明白? 在amp-carousel页面上,它说:,但在演示页面上,amp-img元素具有 ht

  • 问题内容: 我需要能够单独旋转图像(在Java中)。到目前为止,我发现的唯一东西是g2d.drawImage(image,affinetransform,ImageObserver)。不幸的是,我需要在特定点绘制图像,并且没有一种方法带有参数1.分别旋转图像和2.允许我设置x和y。任何帮助表示赞赏 问题答案: 这就是你可以做到的。这段代码假设存在一个名为“ image”的缓冲图像(如你的评论所说)

  • 本节,我们通过平移和旋转画布上下文来旋转图像,然后在变换后的上下文中绘制图像。 图4-11 旋转图像 绘制步骤 按照以下步骤,来旋转图像: 1. 定义画布上下文: window.onload = function(){ var canvas  = document.getElementById("myCanvas"); var context = canvas.getContext("2

  • 问题内容: 我有一张Pan Card的图像,当我尝试将其旋转45度并保存时,会得到裁剪的图像。旋转图像的代码是: 问题答案: 使用AffineTransform看一下这个例子: http://www.billthelizard.com/2008/07/rotate-image-in- java.html 有一些代码可以加载图像,这就是核心: