まだまだ知らないことがたくさんあります。
色々調べ物をしていて、CALayer
なるものを知りました。
めっちゃざっくり言うと、HTMLでいうDOMに似てるなーという感想。
なにはともあれコードを見てもらうと、レイヤーに対してCSS当ててる感じで行けます。
//レイヤーを新規作成
CALayer *sublayer = [CALayer layer];
sublayer.backgroundColor = [UIColor blueColor].CGColor;
sublayer.shadowOffset = CGSizeMake(0, 3);
sublayer.shadowRadius = 5.0;
sublayer.shadowColor = [UIColor blackColor].CGColor;
sublayer.shadowOpacity = 0.8;
sublayer.frame = CGRectMake(30, 30, 120, 150);
sublayer.borderColor = [UIColor blackColor].CGColor;
sublayer.borderWidth = 2.0;
sublayer.cornerRadius = 10.0;
[self.view.layer addSublayer:sublayer];
なんだかDOMのstyleプロパティに色々設定している見たいな感じですね。
元々UIViewはlayer
プロパティを持っていて、そこにaddSublayer:
することでどんどんレイヤーを追加していけるようです。
位置指定はこれまたDOMと同じように、親となるレイヤーとの相対位置になると。
ちょっとした角丸のアイコンとか、画像を使わずにさくっとできそうでいい感じです。
ちなみに画像を設定することも簡単で、以下のようにすることで画像を表示させることができます。
//上記生成の後
sublayer.contents = (id)[UIImage imageNamed:@"hoge.jpg"].CGImage;
注意点としては、カラーやイメージすべてCG****
というプロパティを設定している点です。(Core Foundationのオブジェクト? なんでCGってプレフィクスなんだろ CGはCoreGraphics
の略のようです。ちなみにCAはCoreAnimation
。コメント頂きました)