その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

UIAlertViewを左寄せにする

UIAlertViewのsubviewsからUILabel型のオブジェクトを探してきて、textAlignmentプロパティを設定します。

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title
	message:msg
	delegate:delegate
	cancelButtonTitle:@"OK"
	otherButtonTitles:nil];

id obj = nil;
// タイトル文字列が存在しない場合はsubviewsの1番目の要素
if (!title || !([title length] > 0)) {
	if ([[alertView subviews] count] > 0) {
		obj = [[alertView subviews] objectAtIndex:0];
	}
}
// タイトル文字列が存在する場合はsubviewsの2番目の要素
else if ([title length] > 0) {
	if ([[alertView subviews] count] > 1) {
		obj = [[alertView subviews] objectAtIndex:1];
	}
}

// UILabel型であればtextAlignmentを左寄せにセット
if (obj && [obj isKindOfClass:[UILabel class]]) {
	((UILabel *)obj).textAlignment = UITextAlignmentLeft;
}

[alertView show];
[alertView release];	
}


ちなみにこういうのって審査通るの?と不安でしたが無事通りました。
(非公開APIはだめだけどsubviewsを勝手に取り出してアレコレするのはOKなのか。。?)