[swift]コードで画面を実装するときによく使う部品をモデルで定義してみた
はじめに
ストーリーボードを使わずに画面を実装するとき、ロゴなどのよく使う部品をこのように毎回記述していると、可読性悪くなるしコピペする手間もかかるので嫌だなあと思ってコンポーネント化してみました。
ロゴを実装するとき、毎回同じコードを書くのダルくないですか?
これを毎回書くなんてなんて非効率な・・・
viewController.swift
import UIKit
class ViewController: UIViewController {
//最初のページ
var logoLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
//ロゴ的な
logoLabel = UILabel()
logoLabel.text = "栞の森"
logoLabel.textColor = UIColor.white
logoLabel.font = UIFont(name: "Arial", size: 20)
if #available(iOS 11.0, *) {
logoLabel.frame = CGRect(x: 20, y: 40, width: self.view.frame.width / 6, height: self.view.frame.height / 20)
}else{
logoLabel.frame = CGRect(x: 20, y: 20, width: self.view.frame.width / 6, height: self.view.frame.height / 20)
}
let logoBackColor = #colorLiteral(red: 0, green: 0.6670674086, blue: 0.6729698777, alpha: 1)
logoLabel.backgroundColor = logoBackColor
self.view.addSubview(logoLabel)
// Do any additional setup after loading the view, typically from a nib.
}
}
そこでコンポーネント化して一行でロゴを実装できるようにしよう!
モデルのファイルを作ってロゴをセットする関数を定義する
LogoComponent.swift
import UIKit
class LogoComponent: NSObject {
static let shared = LogoComponent()
func setLogo(myView: UIView){
//ロゴ的な
let logoLabel = UILabel()
logoLabel.text = "栞の森"
logoLabel.textColor = UIColor.white
logoLabel.font = UIFont(name: "Arial", size: 20)
if #available(iOS 11.0, *) {
logoLabel.frame = CGRect(x: 20, y: 40, width: myView.frame.width / 6, height: myView.frame.height / 20)
}else{
logoLabel.frame = CGRect(x: 20, y: 20, width: myView.frame.width / 6, height: myView.frame.height / 20)
}
let logoBackColor = #colorLiteral(red: 0, green: 0.6670674086, blue: 0.6729698777, alpha: 1)
logoLabel.backgroundColor = logoBackColor
myView.addSubview(logoLabel)
}
}
ViewControllerで使用
ViewController.swift
import UIKit
class ViewController: UIViewController {
//最初のページ
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
//なんと一行でロゴが実装できます。
LogoComponent.shared.setLogo(myView: self.view)
// Do any additional setup after loading the view, typically from a nib.
}
}
※ちなみにこのやり方だとviewController上でロゴをいじくりたいときに
参照できなそうなので注意
終わりに
プログラミング初心者の戯言なので参考程度に
また、なにかおかしいときは遠慮せずにコメントで指摘してください
そのほうが投稿者は喜びますので
Author And Source
この問題について([swift]コードで画面を実装するときによく使う部品をモデルで定義してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/maedakei0817/items/5dd3314d3bbe8759a0fd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .