我知道iOS10和所有这些都是新的,但我正在尝试构建一个简单的ms messageappextension应用程序,我发现的所有教程都通过故事板添加了标签,按钮等。
我讨厌自动播放并且不使用故事板,所以我需要找到如何以编程方式添加元素。这就是我尝试过的:
//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.bounds,当视图在这里缩小时,标签仍然显示在视图之外:
我发现当尺寸改变时会调用它,但是即使重置中心也不会做任何事情:
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)
}
除了在不同高度之间切换回来之外,以编程方式添加标签的正确方法是什么?
答案 0 :(得分:0)
更改您的中心计算,以使用y
的超级视图的高度,而不是宽度的一部分:
pointsLabel.center = CGPoint(x: view.bounds.width * 0.5, y: view.bounds.height * 0.5)
虽然紧凑,但宽度实际上大于高度,因此view.bounds.width * 0.7
将标签推离屏幕。