LoginSignup
15
15

More than 5 years have passed since last update.

AutoLayoutから学ぶ新人教育

Last updated at Posted at 2015-06-27

全くもって意味不明かもしれません。

最近新人教育について考えていて、
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想定)

スクリーンショット 2015-06-27 15.20.27.png

スクリーンショット 2015-06-27 15.27.54.png

あ、環境変化(画面回転)しちゃった。

考察

座標指定的指示の方は、一見できた風で、実はできてない、
「なんでこっちの意図わかってくれないの!!!!」「ちょっとは自分で考えてよ!!!」
そんな怒りがこみ上げてくる結果です。

では、このような違いが出た原因はなぜか、、、
開発ソフトXcodeの気持ちになって考えてみます。

座標指定されたXcodeの気持ち

あたくしは「x=80,y=120,width=160,height=240でレイアウト」と言われましたから、そう表示してるだけで、
画面が回転しようが関係ないです。そうしろと言ったのはあなたでしょう!!(逆ギレ!)

『画面中央に、画面サイズ半分のViewを表示せよ!』
という目的が伝わってないようです・・・・。

Auto LayoutされたXcodeの気持ち

あたくしは「親画面に対してx方向中央、y方向中央、width半分、hight半分でレイアウト」と言われたので、
画面回転に伴い、表示を更新いたしました。(まぁなんて優秀!)

『画面中央に、画面サイズ半分のViewを表示せよ!』
という目的がしっかり伝わっていたようです。

結論

部下には、目的をちゃんと伝えないといけませんね。

Auto Layoutは目的を明確に伝えることができるすばらしい技術!

Auto Layout的な指示を心がければ、環境の変化にも勝手に対応してくれる、優秀な人材になることまちがいなし!(と思う・・。)

っといったところで、ネタを終了します。。

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15