Swiftで遊ぼう! - 343 - カスタムTableViewをコードから パート3
Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
質問 : Swiftで遊ぼう! - 252 - FaceViewプロジェクト始動 - Swiftで遊ぼう! on Hatena
次はイニシャライザです。
override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) let nameLabelRect = CGRectMake(0, 5, 70, 15) let nameMarker = UILabel(frame: nameLabelRect) nameMarker.textAlignment = NSTextAlignment.Right nameMarker.text = "Name:" nameMarker.font = UIFont.boldSystemFontOfSize(12) contentView.addSubview(nameMarker) let colorLabelRect = CGRectMake(0, 26, 70, 15) let colorMarker = UILabel(frame: colorLabelRect) colorMarker.textAlignment = NSTextAlignment.Right colorMarker.text = "Color:" colorMarker.font = UIFont.boldSystemFontOfSize(12) contentView.addSubview(colorMarker) let nameValueRect = CGRectMake(80, 5, 200, 15) nameLabel = UILabel(frame: nameValueRect) contentView.addSubview(nameLabel) let colorVlaueRect = CGRectMake(80, 25, 200, 15) colorLabel = UILabel(frame: colorVlaueRect) contentView.addSubview(colorLabel) }
このTableViewCellをインスタンス化するのに、StyleとIdentifierを与えることで、描画させるのですが、Viewクラスの場合、描画という機能を持ち合わせていない。したがって、イニシャライザで描画をする必要があるんです。
まず、スタティックな値「Name」を保持するラベル「nameMarker」を作ります。
CGRect(CGRectMaker)で大きさを設定して、そのデータでframeを設定することでラベルをインスタンス化します。できあがったnameMakerの属性あたるプロパティ(text、font)を設定してから、このラベルをcontentViewに加えると描画されるんです。このcontentViewはViewクラスをインスタンス化した時に必ず持っているベースViewになります。
同様にcolorMarkerを作ります。
nameLabelとcolorLabelはクラス内で既に宣言を終わらしているので、イニシャライザの中で形を与えてやる作業だけで十分です。
これで、この初期化ステップは終了
今日はここまで。