LoginSignup
35
37

More than 5 years have passed since last update.

[iOS] CALayerが便利そう

Last updated at Posted at 2014-02-07

まだまだ知らないことがたくさんあります。
色々調べ物をしていて、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。コメント頂きました)

35
37
2

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
35
37