第二次调用后自定义 UIView 发生变化
Custom UIView changes after second call
我的第一个问题 :D
我有一个基于 Swift 的 iOS 应用程序。一切都在 TabBarController 之下。
所以我调用 Tab 1 并且有一个 TableView。我点击一个单元格,一切正常,除了这个:
我尝试使 UIView 的顶角变圆。现在它变得重要了。我停留在这个详细信息页面并切换到另一个选项卡。
现在我再次单击选项卡 1 并:
太完美了。但为什么在第二次通话时?
rounded 函数在 viewWillAppear 中被调用。所以它应该在第一次调用时加载。
有人有想法吗?
非常感谢
弗洛里安
如果此视图的框架是根据来自 nib 的其他视图的大小以编程方式计算的,如果您在 viewWillAppear 上调用它,它将不起作用,因为视图的框架尚未设置。尝试将其放在 viewDidAppear 方法上。但是,如果视图来自故事板或笔尖,请尝试在视图上使用 layoutIfNeeded() 方法或在 superview layoutSubviews() 中。希望有所帮助:)
这是人们常犯的错误之一,如果您想在 UI 中的某些内容出现在屏幕上之前对其进行更改,viewWillAppear 不是正确的地方,您应该始终执行这些操作在 viewDidLayoutSubviews.
只是走完viewController的生命周期-
viewDidLoad - 当控制器的视图加载到内存中时被调用。
viewWillAppear - 当视图控制器的视图将要添加到视图层次结构时被调用。 (注意 - 该视图尚未添加到视图层次结构中)。
viewDidLayoutSubviews - 当视图控制器刚刚布置它的子视图时被调用。 (注意 - 如果你想在出现在屏幕上之前修改你的 UI,这里就是这个地方。)
viewDidAppear - 当视图控制器的视图添加到视图层次结构时被调用
我的第一个问题 :D
我有一个基于 Swift 的 iOS 应用程序。一切都在 TabBarController 之下。 所以我调用 Tab 1 并且有一个 TableView。我点击一个单元格,一切正常,除了这个:
我尝试使 UIView 的顶角变圆。现在它变得重要了。我停留在这个详细信息页面并切换到另一个选项卡。 现在我再次单击选项卡 1 并:
太完美了。但为什么在第二次通话时? rounded 函数在 viewWillAppear 中被调用。所以它应该在第一次调用时加载。
有人有想法吗?
非常感谢 弗洛里安
如果此视图的框架是根据来自 nib 的其他视图的大小以编程方式计算的,如果您在 viewWillAppear 上调用它,它将不起作用,因为视图的框架尚未设置。尝试将其放在 viewDidAppear 方法上。但是,如果视图来自故事板或笔尖,请尝试在视图上使用 layoutIfNeeded() 方法或在 superview layoutSubviews() 中。希望有所帮助:)
这是人们常犯的错误之一,如果您想在 UI 中的某些内容出现在屏幕上之前对其进行更改,viewWillAppear 不是正确的地方,您应该始终执行这些操作在 viewDidLayoutSubviews.
只是走完viewController的生命周期-
viewDidLoad - 当控制器的视图加载到内存中时被调用。
viewWillAppear - 当视图控制器的视图将要添加到视图层次结构时被调用。 (注意 - 该视图尚未添加到视图层次结构中)。
viewDidLayoutSubviews - 当视图控制器刚刚布置它的子视图时被调用。 (注意 - 如果你想在出现在屏幕上之前修改你的 UI,这里就是这个地方。)
viewDidAppear - 当视图控制器的视图添加到视图层次结构时被调用