gpt4 book ai didi

ios - 使用乘数自动布局在 xcode 8 的界面生成器中为不同的屏幕尺寸创建自动调整大小的 View

转载 作者:行者123 更新时间:2023-11-28 15:53:25 24 4
gpt4 key购买 nike

我已经尝试在 IB 中使用 Autoresizing 来实现这一点,使用 constraints 例如

  • 固定,
  • 纵横比,
  • 垂直间距,
  • 水平/垂直间距,
  • 前导/尾随空格;

但似乎没有一个适用于所有屏幕尺寸。

例如

iphone 7 中的 4 个 ImageView 是它们所需的输出位置,但只要我在 iphone 7 plus 屏幕尺寸或 iphone SE 中检查它 屏幕大小,这些 ImageView 改变位置。

以下是在 iphone 7 上的预期输出。

iphone7图片

enter image description here

以下是预期输出,因为 4 个 ImageView 的位置在 iphone 7 plus 上发生了变化。iphone7plus

enter image description here

我想再分享一张 iPhone SE 的图片,其中所有 4 张图片 View 的位置变化更大,但无法分享,因为声誉低于 10

我会解释,例如,从第一个图像即iphone 7,这4个小 ImageView 可以与白色背景的 ImageView 一起作为预期位置,但在其他两个屏幕尺寸(iphone7 plus和iphoneSE ) 与第一个 View 相比,所有 View (4 个小 ImageView 和带有白色背景的 View )都应该相应地定位缩放

更新:添加了代码我刚刚对 @diana_prodan 在这篇文章中得到的答案之一进行了一些更改,以获得预期的输出。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var imgOne: UIImageView!

@IBOutlet weak var imgTwo: UIImageView!

@IBOutlet weak var imgThree: UIImageView!

@IBOutlet weak var imgFour: UIImageView!

let icon_small : Float = 45.0
let icon_medium : Float = 50.0

override func viewDidLoad() {
super.viewDidLoad()

let viewSize = UIScreen.main.bounds.size
print(viewSize)
//image positioned
//for 4' screen
if (viewSize.height == 568.0){
addImageAtPosition(imgOne, icon_small,41, 106 )
addImageAtPosition(imgTwo, icon_small,105,91 )
addImageAtPosition(imgThree, icon_small,105, 147)
addImageAtPosition(imgFour, icon_small,139, 197 )
//for 4.7' screen
}else if(viewSize.height == 667.0){
addImageAtPosition(imgOne, icon_medium,52, 135 )
addImageAtPosition(imgTwo, icon_medium,127,106 )
addImageAtPosition(imgThree, icon_medium,127, 172 )
addImageAtPosition(imgFour, icon_medium,167, 230 )
//for 5.5' screen
}else if(viewSize.height == 736.0){
//add code woth cordinates for 5.5 screen size iPhone
}
}
//method to positon image views
func addImageAtPosition(_ img:UIImageView, _ size: Float, _ y: Float, _ x: Float) {
let imageView = img
imageView.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(imageView)

let imageSize: CGFloat = CGFloat(size)

let topConstraint = NSLayoutConstraint(item: imageView, attribute: .top, relatedBy: .equal, toItem: self.topLayoutGuide, attribute: .bottom, multiplier: 1, constant: CGFloat(y))

let leftContraint = NSLayoutConstraint(item: imageView, attribute: .left, relatedBy: .equal, toItem: self.view, attribute: .left, multiplier: 1, constant: CGFloat(x))

let widthConstraint = NSLayoutConstraint(item: imageView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: imageSize)

let heightConstraint = NSLayoutConstraint(item: imageView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: imageSize)

view.addConstraints([topConstraint, leftContraint, widthConstraint, heightConstraint])
}

此代码的问题是我必须获取所有 ImageView 在不同屏幕尺寸上的坐标并对其进行硬编码,我认为这不是一个好的做法

最佳答案

获取主视图高度的一半高度约束的 View A。之后给所有图像相同的高度和宽度约束。给一个图像的 x,y 约束 View A 的中心。并链接所有图像集默认约束。

关于ios - 使用乘数自动布局在 xcode 8 的界面生成器中为不同的屏幕尺寸创建自动调整大小的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42068742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com