Swift 中的容器视图边界问题
Container View bounds issue in Swift
我正在编写一个可以获取容器视图的高度和宽度的函数:
// container view's UIViewController
class SelectionView: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
func getBounds -> (CGFloat,CGFloat){
let x = self.view.bounds.width / 5
let y = self.view.bounds.height / 15
return x,y
}
}
我写了一个按钮来调用这个 getBounds() 并且它运行良好,但是当我把它放在 viewDidLoad() 函数中时
override func viewDidLoad() {
super.viewDidLoad()
getBounds()
}
getBounds() returns 我的高度和宽度不同,显然不是这个容器视图的边界。
我很确定我已将此 class 链接到容器视图!
viewDidLoad
中未设置视图布局。因此,尚未完成任何大小调整,并且您的尺寸是错误的(可能与 Storyboard/Xib 中声明的相同)。
将getBounds
移动到viewWillLayoutSubviews
或viewWillAppear
中,它将正常工作。请注意,这些方法不会只被调用一次 ;)
视图尚未在 viewDidLoad 中布局,您可能需要在稍后的方法或 viewDidLayoutSubviews 中捕获它。
我正在编写一个可以获取容器视图的高度和宽度的函数:
// container view's UIViewController
class SelectionView: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
func getBounds -> (CGFloat,CGFloat){
let x = self.view.bounds.width / 5
let y = self.view.bounds.height / 15
return x,y
}
}
我写了一个按钮来调用这个 getBounds() 并且它运行良好,但是当我把它放在 viewDidLoad() 函数中时
override func viewDidLoad() {
super.viewDidLoad()
getBounds()
}
getBounds() returns 我的高度和宽度不同,显然不是这个容器视图的边界。
我很确定我已将此 class 链接到容器视图!
viewDidLoad
中未设置视图布局。因此,尚未完成任何大小调整,并且您的尺寸是错误的(可能与 Storyboard/Xib 中声明的相同)。
将getBounds
移动到viewWillLayoutSubviews
或viewWillAppear
中,它将正常工作。请注意,这些方法不会只被调用一次 ;)
视图尚未在 viewDidLoad 中布局,您可能需要在稍后的方法或 viewDidLayoutSubviews 中捕获它。