我有一个UIView被添加到UIViewController,我想确保视图已经完全加载,因为我想访问和使用这些视图的框架。我在UIView内工作,ViewController仅用于测试目的。如何在UIView完全加载时得到通知
这里是我一起工作的例子:
我加载自定义的UIView到一个UIViewController所以我初始化下列方式的观点:
在UIViewController中
var slideView: BSlideBar = BSlideBar(frame: CGRect(x: 0, y: 150, width: 320, height: 54))
self.view.addSubview(slideView)
在UIView
我有一个XIB文件作为与我的UIView相关联,所以我在自定义init函数中加载了Nib。
这个UIView里面有其他的UIViews,并且都被添加到了UIViewController中。这是所有工作正常,问题是当我试图访问这些意见的属性:
例子:
draggableView.layer.cornerRadius = draggableView.frame.width/2
这将使draggableView了一圈,也让我基地的规模包含在视图中的draggableView同时将其保持为圆形。这意味着我的观点将保持一致,无论我初始化它的框架。令人讨厌的是,框架总是作为XIB文件中的框架而不是加载的UIView的框架返回。 (如果我点击一个按钮后它已经装载了它然后返回预期的和期望的帧)
实施例2:
self.centreLine.frame = CGRect(x: Int(sidePadding), y: Int(slideView.frame.height/2), width: Int(UIScreen.main.bounds.width - 2 * sidePadding), height: 2)
我再次想此视图可调节到该视图的大小,它包含在这种情况下,它应该保持在边缘的填充范围内,并且完全位于视图的中间。事实并非如此。
我试图用使用this答案:
-(void)awakeFromNib
override func layoutSubviews() {
super.layoutSubviews()
}
但是这些都似乎被称为足够晚。
问题部分是由于作为一个UIView里面,因为我通常会叫这样的:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
}
我略有困惑,但在找出为什么这个问题会发生真正的兴趣。我面临的主要问题是简明地搜索问题,并耗尽了我目前的所有线索。
https://stackoverflow.com/questions/4501974/uiview-how-to-get-notified-when-the-view-is-loaded –
我已经将此问题链接到我的问题。这可能是我误解了哪个函数是适合使用的函数。任何额外的解释将是伟大的 –