gpt4 book ai didi

ios - 如何在设备大小快速变化时获取 subview 的当前大小?

转载 作者:搜寻专家 更新时间:2023-11-01 05:48:45 25 4
gpt4 key购买 nike

我必须查看: view_1 和 view_2 。 view_1 高度与主视图 Controller 高度成正比,我以编程方式添加 view_2 作为 view_1 的 subview ,具有成比例的高度。

问题

当设备尺寸从 iPhone 6 更改为 iPhone 5 时,view_1 调整正确但我传递给函数以绘制其 subview view_2 的高度仍然是在界面生成器中设置的,因此它超出了范围iPhone 4 从 iPhone 6 转移

因此我想知道如何获得 View 的正确大小,以便自动调整大小以适应当前设备?

最佳答案

Auto Layout 运行之前,不会确定 View 的大小。您获得正确尺寸的第一个机会是在 viewDidLayoutSubviews 中:

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()

// access view size here
}

这是一个完整的示例,它添加了第二个 View 作为第一个 View 的 subview 。 Storyboard 中添加了红色 View ;它水平和垂直居中,高度/宽度为其父 View 的 50%。

黄色 View 以编程方式添加。它的框架是根据红色 View 的框架计算的,为红色 View 宽度的 50%。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var view1: UIView!
var view2: UIView?

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()

if view2 == nil {
view2 = UIView()
view2?.backgroundColor = .yellowColor()
view1.addSubview(view2!)
}

let width = view1.frame.size.width
let height = view1.frame.size.height

let frame = CGRect(x: width * 0.25, y: height * 0.25, width: width * 0.5, height: height * 0.5)

view2?.frame = frame
}
}

并不是说 viewDidLayoutSubviews 被多次调用,所以你必须注意不要在每次调用时都添加 view2。这就是代码检查是否添加了 view2 的原因。


iPhone 4s Simulator Portrait


iPhone 5s Simulator Landscape


iPhone 5s Rotation exmaple

关于ios - 如何在设备大小快速变化时获取 subview 的当前大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37965383/

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