gpt4 book ai didi

ios - 在 Swift 中以编程方式向消息应用程序添加标签?

转载 作者:行者123 更新时间:2023-11-30 13:04:41 25 4
gpt4 key购买 nike

我知道这是 iOS10 等的新功能,但我正在尝试构建一个简单的 ms messageappextension 应用程序,并且我发现的所有教程都通过 Storyboard添加标签、按钮等。

我讨厌自动布局,也不使用 Storyboard,所以我需要找到如何以编程方式添加元素。这是我尝试过的:

//main label
pointsLabel.frame = CGRect(x: 0, y: 0, width: view.bounds.width * 0.5, height: view.bounds.height * 0.1)
pointsLabel.center = CGPoint(x: view.bounds.width * 0.5, y: view.bounds.width * 0.7)
pointsLabel.textColor = UIColor.red
pointsLabel.textAlignment = .center
pointsLabel.text = "Testing 123"
pointsLabel.font = UIFont(name: "Helvetica", size: screenSize.height * (30/screenSize.height))

view.addSubview(pointsLabel)

这就是 Id 通常制作标签的方式,当 MSMessagesAppViewController 处于完整 View 时,这会起作用,如下所示:

enter image description here

但是像这样,即使中心的定位是基于view.bounds,当 View 缩小到这里时,标签仍然显示在 View 之外:

enter image description here

我发现当尺寸改变时会调用这个函数,但是即使在这里重置中心也不起作用:

override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
// Called before the extension transitions to a new presentation style.

// Use this method to prepare for the change in presentation style.

print(view.bounds.height)
pointsLabel.center = CGPoint(x: view.bounds.width * 0.5, y: view.bounds.width * 0.7)
}

除了在不同高度之间来回切换之外,以编程方式添加标签的正确方法是什么?

最佳答案

更改中心计算以使用 super View 的高度作为 y,而不是宽度的一部分:

pointsLabel.center = CGPoint(x: view.bounds.width * 0.5, y: view.bounds.height * 0.5)

虽然紧凑,但宽度实际上大于高度,因此 view.bounds.width * 0.7 将标签推离屏幕。

关于ios - 在 Swift 中以编程方式向消息应用程序添加标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39541170/

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