订制IOS系统控件要注意的问题
通常在定制系统控件时,一般要遍历控件内的subviews,如下在定制UIAlertView时
[html]
-(void)willPresentAlertView:(UIAlertView *)alertView{
for (UIView* view in [alertView subviews])
{
//判断如果是UILabel
if ([[[view class] description] isEqualToString:@"UILabel"])
{
//针对UILabel做定制操作
}
//判断如果是UIButton
if ([[[view class] description] isEqualToString:@"UIAlertButton"]
|| [[[view class] description] isEqualToString:@"UIThreePartButton"])
{
//针对UIButton做定制操作
}
}
}
使用 [[[view class] description] isEqualToString:@"UIAlertButton"] 方法判断当前View是不是一个按钮时,有个弊端,因为[[view class] description]在不同的设备上有不同的描述,所以在以上的方法中使用了UIAlertButton或者UIThreePartButton,当然甚至还有更多。
其实完全不需要这样判断,可以使用[view isKindOfClass:NSClassFromString(@"UIButton")]来判断,也不用区分不同的设备,修改后的方法如下:
[html]
-(void)willPresentAlertView:(UIAlertView *)alertView{
for (UIView* view in [alertView subviews])
{
//判断如果是UILabel
if ([view isKindOfClass:NSClassFromString(@"UILabel")])
{
//针对UILabel做定制操作
}
//判断如果是UIButton
if ([view isKindOfClass:NSClassFromString(@"UIButton")])
{
//针对UIButton做定制操作
}
}
}
补充:移动开发 , IOS ,