gpt4 book ai didi

ios - 如何确保 uiview 在不同的 ipad 中看起来相同而不使用约束

转载 作者:行者123 更新时间:2023-11-30 11:12:22 24 4
gpt4 key购买 nike

在下面的例子中我提到了

-view(我将在两台 iPad 上显示的 UIView)。

-parentView(与 iPad 分辨率相同的容器 UIView)。

-parentViewOfIPadInWhichViewHasMade :这是已保存 View 的 iPad 的父 View 。在不同 iPad 中显示 View 时将使用此 View 。

功能是我在 iPad mini 中保存 View ,保存它会将其帧信息存储在服务器上,当从 iPad pro 打开应用程序时,它将从服务器获取这些数据并在 iPad pro 中显示 View 。

如果 View 已调整为 iPad Pro 的全屏并从 iPad Mini 获取,这是我的预期输出

iPad Pro 12.9 英寸:

  • view.size(x:-25.0,y:-25.0,宽度:1416.0,高度:874.0)
  • parentView.size(x:0.0,y:0.0,宽度:1366.0,高度:824.0)

iPad 迷你:

  • view.size:(x:-25.0,y:-25.0,宽度:1074.0,高度:618.0)
  • parentView.size:(x:0.0,y:0.0,宽度:1024.0,高度:568.0)

为了得到这个,我在 View 中编写了下面的代码,确实加载了。

viewX = parentView.frame.width * view.origin.x / parentViewOfIPadInWhichViewHasMade!.width

viewY = parentView.frame.height * view!.origin.y / parentViewOfIPadInWhichViewHasMade!.height

viewWidth = parentView.frame.width * view!.frame.width / parentViewOfIPadInWhichViewHasMade!.width

viewHeight = parentView.frame.height * view!.frame.height / parentViewOfIPadInWhichViewHasMade!.height

注意:无法修复 View 大小或使用约束。

最佳答案

我可以提出一些想法(在编码之前......):

1) 您的图形/创意设计必须从用户体验的角度精确考虑布局。完成这项艰巨的工作后,您就可以开始编码了。

2)您当然可以在不使用约束的情况下使用代码。作为一名程序员,您更喜欢做数学而不是使用鼠标。但要小心:使用约束更加灵活,您也可以混合代码。

3)一种普遍而深入的方法可以是在每个 View 中实现layoutSubviews..

示例:

   override func layoutSubviews() {

super.layoutSubviews()

self.titleLabel?.sizeToFit()
self.subTitle?.sizeToFit()
self.callLabel?.sizeToFit()

if(self.subTitle?.text == nil) {
self.callLabel?.center.y = (self.titleLabel?.center.y)!
}

}

但老实说,为了基本需求,最好使用约束,并最终添加 IBOutlet,以便您可以在代码中控制,例如自定义 View 中的高度:

final func setH(Hconstraint: NSLayoutConstraint!){

var h = Hconstraint!.constant
if (.... add your test based on models, orientation...){
h = H1
}else{
h = H2
}

Hconstraint.constant = h // re-apply height.
self.setNeedsDisplay() // to trigger redraw... seems needed in some cases...
}

(您也可以在 Controller 中添加此代码..但最好将其放在自定义 View 中,这样逻辑就在那里..)

关于ios - 如何确保 uiview 在不同的 ipad 中看起来相同而不使用约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52051349/

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