UIAlertViewのカスタマイズ「addTextFieldWithValue:label:」を乗り越える その2
NSLog(@"%@",NSStringFromClass([view class])); をループの中に書いてクラス名を拾ってみる
2011-03-29 19:03:02.636 ApplicationName [8352:307] UIImageView 2011-03-29 19:03:02.639 ApplicationName [8352:307] UILabel 2011-03-29 19:03:02.641 ApplicationName [8352:307] UILabel 2011-03-29 19:03:02.644 ApplicationName [8352:307] UIThreePartButton 2011-03-29 19:03:02.646 ApplicationName [8352:307] UIThreePartButton 2011-03-29 19:03:02.648 ApplicationName [8352:307] UITextField
なんと!! 枠は UIImageView じゃないですか?
これは、勝手に写真とかを入れちゃえるってことですよね?
ボタンはというと。。。
UITreePartButton ってなんだ?
この名前を使ってクラス判定すればよいんだけど、これ自体が非公開だったらいやなので
下記のようにしてUIImageViewを捕まえて、その他にこのUITreePartButtonが来るようにする。
for(UIView *view in self.subviews) { if ([view isKindOfClass:[UILabel class]]) { CGRect viewFrame = [view frame]; viewFrame.origin.y = viewFrame.origin.y + ObjectMaxY; [view setFrame:viewFrame]; ObjectMaxY = ObjectMaxY + viewFrame.size.height; }else if([view isKindOfClass:[UITextField class]]){ CGRect viewFrame =CGRectMake(kUITextFieldXPadding ,labelMaxY + kUITextFieldYPadding , alertWidth - 2.0*kUITextFieldXPadding , kUITextFieldHeight); [view setFrame:viewFrame]; }else if([view isKindOfClass:[UIImageView class]]){ }else{ CGRect viewFrame = [view frame]; viewFrame.origin.y = labelMaxY + kUITextFieldYPadding +kUITextFieldYPadding + kUITextFieldHeight; [view setFrame:viewFrame]; } }
実のとこ、これでもUILabelの位置が重なっておかしいのだけれど
僕はTitleを @””にて設定して使っているので、まあいいや。