首先我从我做了什么开始,最后我会描述问题,这样会更清楚。一般来说,在 Android Studio 之后,在 Xcode 中处理视图元素仍然是一项任务。我明白一个好的程序员不会写两次相同的代码,以至于每次在不同的Controller中都没有描述每次的视图元素——所以我在主Controller中写了这个函数
class func designForButton (button: UIButton){
button.layer.masksToBounds = true
button.layer.cornerRadius = 8
}
然后你可以在不同的控制器中访问它
class RegisterViewController: UIViewController {
@IBOutlet weak var buttonBack: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
ViewController.designForButton(button: buttonBack)
}
现在,还不清楚。我加载了框架以使用 Toast。我在主控制器中描述了它的值
func designForToast(message: String){
let style = CSToastStyle.init(defaultStyle: {
}())
_ = style?.backgroundColor = UIColor.gray
_ = style?.titleColor = UIColor.cyan
_ = style?.messageColor = UIColor.darkGray
self.view.makeToast(message, duration: 2, position: self.bottomLayoutGuide, title: "title", image: UIImage (named: "logo.jpg"), style: style ) { (success: Bool) in
}
}
但问题是,在这种情况下,我可以在同一个控制器中专门针对它
_=self.designForToast(message: "Its a Toast")
一旦我想做func ()
- 就像class func ()
在另一个控制器中工作一样,Xcode 开始强调这是不可能的,并且由于我的经验不足,我无法自己修复它。
我建议您viewController
在方法中添加一个参数,使其看起来像这样:
static func showToast(message: String, on viewController: UIViewController){ // I also renamed the method as well
let style = CSToastStyle.init(defaultStyle: {
}())
_ = style?.backgroundColor = UIColor.gray
_ = style?.titleColor = UIColor.cyan
_ = style?.messageColor = UIColor.darkGray
viewController.view.makeToast(message, duration: 2, position: viewController.bottomLayoutGuide, title: "title", image: UIImage (named: "logo.jpg"), style: style ) { (success: Bool) in
}
}
我还建议您将这些“辅助函数”放在指定的类中,例如StyleHelper
或类似的东西。
然后你可以在视图控制器中像这样使用它:
StyleHelper.showToast(message: "Hello", on: self)
或者更好的是,将其作为扩展方法!
extension UIViewController {
func showMyToast(message: String){
let style = CSToastStyle.init(defaultStyle: {
}())
_ = style?.backgroundColor = UIColor.gray
_ = style?.titleColor = UIColor.cyan
_ = style?.messageColor = UIColor.darkGray
self.view.makeToast(message, duration: 2, position: self.bottomLayoutGuide, title: "title", image: UIImage (named: "logo.jpg"), style: style ) { (success: Bool) in
}
}
}
然后你可以在视图控制器中像这样使用它:
self.showMyToast(message: "Hello")
边注:
对于符合UIAppearance
协议的视图,您可以访问该appearance()
属性以全局更改其样式。例如,您可以在didFinishLaunchingWithOptions
:
UIButton.appearance().tintColor = .red
UIButton
你创造的每一个都会是红色的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句