Xcode提供了分段控制,但我想要一个带有选择器的自定义分段控件,当你按下它时,它会滑动到每个按钮。我使用了3个视图。一个是"主要"我添加了两个子视图的视图。其中一个子视图是选择器(UIView),另一个是包含按钮的UIStackView。我使用selector = UIView(frame: CGRect(x: 0, y: 0, width: self.frame.width/CGFloat(buttons.count), height: self.frame.height))
作为选择器的大小。当我在故事板中使用我的类来查看视图时,一切看起来都很好。我为superview制定了约束,但是当我使用模拟器启动应用程序时,我得到了故事板中设置的宽度,而不是运行时使用self.frame.width
的实际宽度。
我使用this视频作为模板。 here是我运行应用时的样子。选择器不像一个按钮那么大,这就是我在正确的网站上获得这个白条的原因。
答案 0 :(得分:3)
UIControl 继承自 UIView 类,您可以使用 layoutSubviews 函数在应用约束后获取正确的框架 < / p>
override func layoutSubviews() {
super.layoutSubviews()
//self.frame will be correct here
}
参考:
https://developer.apple.com/documentation/uikit/uiview/1622482-layoutsubviews https://developer.apple.com/documentation/uikit/uicontrol
答案 1 :(得分:0)
看起来你在设置约束之前得到了框架,尝试获取框架 viewDidLayoutSubviews 或 viewDidAppear 事件
下面是事件和约束状态: