Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 视图将显示自定义UILabel、UIButton类的备选视图_Ios_Swift - Fatal编程技术网

Ios 视图将显示自定义UILabel、UIButton类的备选视图

Ios 视图将显示自定义UILabel、UIButton类的备选视图,ios,swift,Ios,Swift,UIIbutton类是否有类似于ViewWillAspect()的函数? 以下所有函数只调用一次 PrepareFormonterFaceBuilder() awakeFromNib() init() 因此,不会出现与视图完全不同的视图 这是因为这些是体系结构的根本不同方面。一个通常是管理员(一个视图控制器),另一个通常是仆从(UIView)。 它们的生命周期自然不同 但是,如果您想在自定义视图中执行更改,无论是UIButton还是任何其他UIView子类,您可以使用方法setNeedsLayo

UIIbutton类是否有类似于ViewWillAspect()的函数? 以下所有函数只调用一次

PrepareFormonterFaceBuilder()

awakeFromNib()

init()


因此,不会出现与视图完全不同的视图

这是因为这些是体系结构的根本不同方面。一个通常是管理员(一个视图控制器),另一个通常是仆从(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不会更改其文本颜色。无论如何,谢谢你的洞察力!