エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

iOS QuickDialogのひとつのelementsのappearanceをいじったら全部の見栄えが変わってしまう件

ハマりました。

// NG
[self.root elementWithKey:@"hoge"].appearance.backgroundColorEnabled = [UIColor redColor];

これでやると、なぜか他のelementの色も変わっちゃう!(?_?)
いろいろデバッグしたりしてかなり彷徨っていたんですが、

// OK
QAppearance *appearance = [QAppearance new];
appearance.backgroundColorEnabled = [UIColor redColor];
[self.root elementWithKey:@"hoge"].appearance = appearance;

これで解決しました。なんて事はない、appearanceごと変えなきゃいけなかったんですね。そして、初期状態では全てのelementsは同じインスタンスのappearanceを見ているんですね。効率化のためなのでしょう。
でも、そのおかげでよけいに迷った・・・。

なんかframeの変更の仕方を思い出しました。

CGRect frame = view.frame;
frame.size.height += addValue;
view.frame = frame;

これも最初よく間違えてました。