那根本不会是直截了当的。
如果 SDK 正在使用,请UIAlertView
尝试调整show
方法。
您的实现应大致执行以下操作:
1)不要让原来的 UIAlertView 显示——很难自定义它。
2)保留旧的参考,.delegate
以便在需要时通知它。
3)创建自己的自定义 UIView 并使用[[UIApplication sharedApplication].keyWindow addSubview:myCustomAlertView];
.
4)我相信你可以使用它的属性如
@property(nonatomic,copy) NSString *title;
@property(nullable,nonatomic,copy) NSString *message;
- (nullable NSString *)buttonTitleAtIndex:(NSInteger)buttonIndex;
@property(nonatomic,readonly) NSInteger numberOfButtons;
@property(nonatomic) NSInteger cancelButtonIndex;
5)创建自己的设计并在需要时调用相应的委托方法。
其他方法是使用 Apple 的 Private API,但这可能会导致不好的结果。
这是一种非常 HACKY 的方法。首先,您无法保证它甚至会起作用。其次,您的应用可能会被拒绝。因此,我不会真的推荐它...
但是,如果您真的想采用这种方法,请尝试这样做:
在延迟一段时间后[myAlertView show];
查看其属性(即 0.01 秒就足够了):
现在查找可疑属性(可能属于 UIView 类),这些属性可能包含与 UI 相关的信息。例如,__representer
看起来很有趣——它有约束,它有labelContainerView
......尝试使用这些属性。
为了得到它__representer
,请使用 KVC 和 KVO(即以 开头id theAlertController = [myAlertView valueForKey:@"_alertController"];
)。然后越潜越深。
希望您能够找到有用的属性,并能够通过 KVC 更改它们的值。