このライブラリをプロジェクトに追加しました
https://github.com/KyoheiG3/NavigationNotice
swift
1file.swift 2 3import UIKit 4extension UIView { 5 func contentView(text: String) -> UIView { 6 let view = UIView(frame: CGRect(x: 0, y: 0, width: 375, height: 64)) 7 view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 8 9 let label = UILabel(frame: view.bounds) 10 label.frame.origin.x = 10 11 label.frame.origin.y = 10 12 label.frame.size.width -= label.frame.origin.x 13 label.frame.size.height -= label.frame.origin.y 14 15 label.autoresizingMask = [.flexibleWidth, .flexibleHeight] 16 label.text = text 17 label.numberOfLines = 2 18 label.textColor = UIColor.white 19 view.addSubview(label) 20 21 return view 22 } 23}
swift
1ViewController.swift 2 3import UIKit 4import NavigationNotice 5class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 UIView.contentView("test") 10 11 } 12}
このコードだとエラーが発生します。
同じファイルにまとめて書くとうまくいくのですが。。。
swift
1ViewController.swift 2 3import UIKit 4import NavigationNotice 5class ViewController: UIViewController { 6 func contentView(_ text: String) -> UIView { 7 let view = UIView(frame: CGRect(x: 0, y: 0, width: 375, height: 64)) 8 view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 9 10 let label = UILabel(frame: view.bounds) 11 label.frame.origin.x = 10 12 label.frame.origin.y = 10 13 label.frame.size.width -= label.frame.origin.x 14 label.frame.size.height -= label.frame.origin.y 15 16 label.autoresizingMask = [.flexibleWidth, .flexibleHeight] 17 label.text = text 18 label.numberOfLines = 2 19 label.textColor = UIColor.white 20 view.addSubview(label) 21 22 return view 23 } 24 25 override func viewDidLoad() { 26 super.viewDidLoad() 27 28 let content = self.contentView("test") 29 content.frame.size.height = 64 30 content.backgroundColor = UIColor.blue 31 NavigationNotice.onStatusBar(false).addContent(content).showOn(self.view).hide(5) 32 } 33}
func contentView(_ text: String) -> UIView {...} の部分は他のViewControllerでも頻繁に使うので、extensionとして実装したいです。
どのようにすればextensionとして実装できるのでしょうか
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。