UIActionSheet *myActionSheet = [[UIActionSheet alloc]
initWithTitle:nil
delegate:self
cancelButtonTitle:@"取消"
destructiveButtonTitle:nil
otherButtonTitles: @"分享",@"删除",@"举报",nil];
[myActionSheet showInView:self.view];
}
-(void)willPresentActionSheet:(UIActionSheet *)actionSheet{
NSLog(@"actionSheet.subviews:%@",actionSheet.subviews);
for (UIView *view in actionSheet.subviews) {
if (view.tag == 2) {
UIButton *button = (UIButton *) view;
//改变背景
[button setBackgroundImage:[button backgroundImageForState:UIControlStateHighlighted] forState:UIControlStateNormal];
//改变颜色
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
//btn的选择状态,否则选择后不变背景
[button setSelected:YES];
}
}
}
打印出来`actionSheet.subviews:(
)`
为什么为空啊 明明有3个按钮
高洛峰2017-04-17 15:38:27
UIAlertView は以前はサブビューを取得できましたが、その後は取得できなくなりました。
Apple の目的は、開発者にこれらのビューを定義させないことです。
したがって、subviews メソッドを呼び出すことで、内部の View を確実に取得できます。
Apple がこれを行うには、次の 2 つの方法があると思います:
1. サブビューがまったくなく、どのボタンがレイヤーまたは再描画を使用するか。
2. これらのクラスのサブビュー メソッドをオーバーロードして、空の配列を返すようにします。 (これが最も可能性が高いです)
Apple はカスタマイズの方法を制限しているため、これは少し面倒かもしれません。
カスタム ビューをサポートするこのライブラリを試すことができます: JGActionSheet