全くもって意味不明かもしれません。
最近新人教育について考えていて、
iOSのAutoLayoutの考え方って「新人への指示の仕方」に通じてないか?と思って考察したものです。
ほとんどネタです。
しかも、iOSの知識がないと意味不明です、、
しかも、Autoresizingには全く触れないという暴挙ぶりでございます。
なので、自己満足です(汗
ミッション
画面中央に、画面サイズ半分のViewを表示せよ!
座標指定的指示
//View初期化
let subview = UIView()
self.view.addSubview(subview)
//画面レイアウト計算
let rect = subview.superview!.bounds
let width = rect.size.width / 2.0
let height = rect.size.height / 2.0
let x = (rect.size.width - width) / 2.0
let y = (rect.size.height - height) / 2.0
//画面レイアウト指示(x=80,y=120,width=160,height=240)
subview.frame = CGRectMake(x, y, width, height)
Auto Layout的指示
//View初期化
let subview = UIView()
subview.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(subview)
//画面レイアウト指示(親画面に対してx方向中央、y方向中央、width半分、hight半分でレイアウト)
self.view.addConstraints([
NSLayoutConstraint(
item: subview,
attribute: .CenterX,
relatedBy: .Equal,
toItem: subview.superview,
attribute: .CenterX,
multiplier: 1.0,
constant: 0.0),
NSLayoutConstraint(
item: subview,
attribute: .CenterY,
relatedBy: .Equal,
toItem: subview.superview,
attribute: .CenterY,
multiplier: 1.0,
constant: 0.0),
NSLayoutConstraint(
item: subview,
attribute: .Width,
relatedBy: .Equal,
toItem: subview.superview,
attribute: .Width,
multiplier: 0.5,
constant: 0.0),
NSLayoutConstraint(
item: subview,
attribute: .Height,
relatedBy: .Equal,
toItem: subview.superview,
attribute: .Height,
multiplier: 0.5,
constant: 0.0),
])
self.view.layoutIfNeeded()
成果物
(iPhone4s想定)
あ、環境変化(画面回転)しちゃった。
考察
座標指定的指示の方は、一見できた風で、実はできてない、
「なんでこっちの意図わかってくれないの!!!!」「ちょっとは自分で考えてよ!!!」
そんな怒りがこみ上げてくる結果です。
では、このような違いが出た原因はなぜか、、、
開発ソフトXcodeの気持ちになって考えてみます。
座標指定されたXcodeの気持ち
あたくしは「x=80,y=120,width=160,height=240でレイアウト」と言われましたから、そう表示してるだけで、
画面が回転しようが関係ないです。そうしろと言ったのはあなたでしょう!!(逆ギレ!)
『画面中央に、画面サイズ半分のViewを表示せよ!』
という目的が伝わってないようです・・・・。
Auto LayoutされたXcodeの気持ち
あたくしは「親画面に対してx方向中央、y方向中央、width半分、hight半分でレイアウト」と言われたので、
画面回転に伴い、表示を更新いたしました。(まぁなんて優秀!)
『画面中央に、画面サイズ半分のViewを表示せよ!』
という目的がしっかり伝わっていたようです。
結論
部下には、目的をちゃんと伝えないといけませんね。
Auto Layoutは目的を明確に伝えることができるすばらしい技術!
Auto Layout的な指示を心がければ、環境の変化にも勝手に対応してくれる、優秀な人材になることまちがいなし!(と思う・・。)
っといったところで、ネタを終了します。。