Ios 视图将显示自定义UILabel、UIButton类的备选视图
UIIbutton类是否有类似于ViewWillAspect()的函数? 以下所有函数只调用一次 PrepareFormonterFaceBuilder() awakeFromNib() init()Ios 视图将显示自定义UILabel、UIButton类的备选视图,ios,swift,Ios,Swift,UIIbutton类是否有类似于ViewWillAspect()的函数? 以下所有函数只调用一次 PrepareFormonterFaceBuilder() awakeFromNib() init() 因此,不会出现与视图完全不同的视图 这是因为这些是体系结构的根本不同方面。一个通常是管理员(一个视图控制器),另一个通常是仆从(UIView)。 它们的生命周期自然不同 但是,如果您想在自定义视图中执行更改,无论是UIButton还是任何其他UIView子类,您可以使用方法setNeedsLayo
因此,不会出现与视图完全不同的视图 这是因为这些是体系结构的根本不同方面。一个通常是管理员(一个视图控制器),另一个通常是仆从(UIView)。 它们的生命周期自然不同 但是,如果您想在自定义视图中执行更改,无论是UIButton还是任何其他UIView子类,您可以使用方法
setNeedsLayout()
进行重置
来自苹果文档
当需要时,在应用程序的主线程上调用此方法
调整视图子视图的布局。这种方法记录了
请求并立即返回。因为这个方法没有
强制立即更新,但等待下一次更新
循环,可以使用它使多个视图的布局无效
在更新任何这些视图之前。此行为允许您
将所有布局更新合并到一个更新周期,即
通常性能更好。
大宗报价
您应该通过重写来对视图的设置执行进一步的操作
layoutSubviews()
方法
再一次,从文档中
子类可以根据需要重写此方法以执行更精确的操作
它们的子视图的布局。仅当
子视图的自动调整大小和基于约束的行为不会
提供你想要的行为。您可以使用您的实现来设置
直接显示子视图的框架矩形。你不应该打电话
这种方法是直接的。如果要强制布局更新,请调用
改为使用setNeedsLayout()方法在下一个图形之前执行此操作
使现代化如果要立即更新视图的布局,
调用layoutIfNeeded()方法
希望我已经解释清楚了
您还可以用代码发布您的确切情况,以获得更清晰的答案。因此,不会出现与视图完全相同的情况 这是因为这些是体系结构的根本不同方面。一个通常是管理员(一个视图控制器),另一个通常是仆从(UIView)。 它们的生命周期自然不同 但是,如果您想在自定义视图中执行更改,无论是UIButton还是任何其他UIView子类,您可以使用方法
setNeedsLayout()
进行重置
来自苹果文档
当需要时,在应用程序的主线程上调用此方法
调整视图子视图的布局。这种方法记录了
请求并立即返回。因为这个方法没有
强制立即更新,但等待下一次更新
循环,可以使用它使多个视图的布局无效
在更新任何这些视图之前。此行为允许您
将所有布局更新合并到一个更新周期,即
通常性能更好。
大宗报价
您应该通过重写来对视图的设置执行进一步的操作
layoutSubviews()
方法
再一次,从文档中
子类可以根据需要重写此方法以执行更精确的操作
它们的子视图的布局。仅当
子视图的自动调整大小和基于约束的行为不会
提供你想要的行为。您可以使用您的实现来设置
直接显示子视图的框架矩形。你不应该打电话
这种方法是直接的。如果要强制布局更新,请调用
改为使用setNeedsLayout()方法在下一个图形之前执行此操作
使现代化如果要立即更新视图的布局,
调用layoutIfNeeded()方法
希望我已经解释清楚了
您还可以使用代码发布您的确切情况,以获得更清晰的信息和答案。没有一个简单的方法可以做到这一点:UILabel,UIButton没有这样的功能,因为它们是从UIControl->UIView->UIResponder继承的。这些类没有这样的功能 您可以执行的操作:在包含按钮和标签的主控制器中,您可以在
视图中调用自定义方法,它将出现
,更新自定义元素的内容
PS.您可以像数组一样组织元素,也可以检查超级视图,并基于协议/类调用您的自定义方法。没有简单的方法:UILabel,UIButton没有这样的功能,因为它们是从UIControl->UIView->UIResponder继承的。这些类没有这样的功能 您可以执行的操作:在包含按钮和标签的主控制器中,您可以在
视图中调用自定义方法,它将出现
,更新自定义元素的内容
PS.元素可以像数组一样组织,也可以检查超级视图,并基于协议/类调用自定义方法。在Abhishek Arora的帮助下,我能够以这种方式更改UILabel的textColor
override func setNeedsLayout() {
tintColor = .clear
}
override func tintColorDidChange() {
print("TINT COLOR DID CHANGE")
textColor = .blue
}
}
在阿披舍克·阿罗拉的帮助下,我能够以这种方式更改UILabel的文本颜色
override func setNeedsLayout() {
tintColor = .clear
}
override func tintColorDidChange() {
print("TINT COLOR DID CHANGE")
textColor = .blue
}
}
您的答案适用于UIButton自定义类。出于一些奇怪的原因,UILabel不会更改其文本颜色。无论如何,谢谢你的洞察力!您的答案适用于UIButton自定义类。出于一些奇怪的原因,UILabel不会更改其文本颜色。无论如何,谢谢你的洞察力!