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 继承许多UIViewController的背景色和其他属性_Ios_Swift_Cocoa Touch_Ios9_Uistoryboard - Fatal编程技术网

Ios 继承许多UIViewController的背景色和其他属性

Ios 继承许多UIViewController的背景色和其他属性,ios,swift,cocoa-touch,ios9,uistoryboard,Ios,Swift,Cocoa Touch,Ios9,Uistoryboard,对于具有许多UIViewController的iOS9+/Swift 3应用程序,继承相同背景颜色和其他常见属性(字体、间距等)的最佳实践方法是什么。最好有一个公共基类吗?或者某种协议?因为大多数可视属性都与特定的UIView和UIView子类(如UILabel、UIButton等)关联,我建议在UIViewController级别处理这一点会迫使视图控制器负责太多特定于其他类的细节 苹果的内置机制是UIAppearance API,用于在各种视图上设置全局视觉属性。有一个 使用UIAppear

对于具有许多UIViewController的iOS9+/Swift 3应用程序,继承相同背景颜色和其他常见属性(字体、间距等)的最佳实践方法是什么。最好有一个公共基类吗?或者某种协议?

因为大多数可视属性都与特定的UIView和UIView子类(如UILabel、UIButton等)关联,我建议在UIViewController级别处理这一点会迫使视图控制器负责太多特定于其他类的细节

苹果的内置机制是UIAppearance API,用于在各种视图上设置全局视觉属性。有一个

使用UIAppearance的缺点是它不容易适应样式的变化,比如一些按钮是红色的,一些按钮是蓝色的。它基本上是应用程序中某个视图的所有实例的固定默认外观


我个人更喜欢使用专用的样式框架,允许将预定义的样式组合应用于视图。我还创建了,以便于为UIKit组件创建样式,并在故事板中应用和预览它们。

因为大多数视觉属性都与特定的UIView和UIView子类(如UILabel、UIButton等)关联,我建议在UIViewController级别处理这一问题会迫使视图控制器负责太多特定于其他类的细节

苹果的内置机制是UIAppearance API,用于在各种视图上设置全局视觉属性。有一个

使用UIAppearance的缺点是它不容易适应样式的变化,比如一些按钮是红色的,一些按钮是蓝色的。它基本上是应用程序中某个视图的所有实例的固定默认外观


我个人更喜欢使用专用的样式框架,允许将预定义的样式组合应用于视图。我还创建了一个,以便于为UIKit组件创建样式,并在故事板中应用和预览它们。

您可以有一个包含UI常量的常量文件。只需在所有视图控制器中引用这些变量,如果需要进行更改,其他所有变量也会更改

您还可以对某些内容进行扩展。我通常在UIColor上有一个返回颜色的扩展,我可以在扩展中更改它,它将在其他任何地方更改

e、 g


您可以有一个带有UI常量的常量文件。只需在所有视图控制器中引用这些变量,如果需要进行更改,其他所有变量也会更改

您还可以对某些内容进行扩展。我通常在UIColor上有一个返回颜色的扩展,我可以在扩展中更改它,它将在其他任何地方更改

e、 g


您可以为所需组件创建一个公共基类,例如设置视图的背景色,创建一个子类,并将其名称命名为BackgroundView

class UHBView: UIView {

    override func awakeFromNib() {
        super.awakeFromNib()  
        self.backgroundColor = UIColor.blueColor(); //Any color you want
    }

}
现在,在Interface Builder中的identity inspector中将该子类设置为任何视图的自定义类


您可以为所需的组件创建一个公共基类,例如设置视图的背景色,创建一个子类,并将其名称命名为BackgroundView

class UHBView: UIView {

    override func awakeFromNib() {
        super.awakeFromNib()  
        self.backgroundColor = UIColor.blueColor(); //Any color you want
    }

}
现在,在Interface Builder中的identity inspector中将该子类设置为任何视图的自定义类


“如果你的问题可以用整本书来回答,或者有很多有效答案,那么对我们的格式来说可能太宽了”“如果你的问题可以用整本书来回答,或者有很多有效答案,那么对我们的格式来说可能太宽了”这似乎是一个运行时属性,我的印象是协议在Swift中优于继承…但我真的不知道。这似乎是一个运行时属性,我的印象是协议在Swift中优于继承…但我真的不知道。另一种定义可组合和可重用样式的方法,如果您感兴趣:。另一种定义可组合和可重用样式的方法,如果您感兴趣:。