我需要看起来像UIAlertView
的东西(相同的背景透明且不是全屏),阻止其他UI部分并且有一些自定义内容。
这个自定义内容是:两个带标签的复选框和两个底部的YES / NO按钮。
对UIAlertView
进行子类化或自定义看起来并不实用(请参阅this answer),这很危险(Apple可以拒绝代码)。我正在考虑创建自己的自定义UIView
(可能与UIViewController
),但我不知道如何让它看起来像UIAlertView。我的意思是我想让它改变它的外观取决于iOS版本(iOS7)。
更新:
我可以放弃os版本依赖,它会很好,但这是附加功能
主要的问题是:有没有一种很好的方法来制作这样的视图,它看起来和感觉像UIAlertView没有大量的工作?自定义UIAlertView
直接看起来很复杂和危险。
答案 0 :(得分:19)
我创建了自己的自定义视图,看起来像iOS UIAlertView 7.使用该技术,您可以为iOS 6和iOS 7创建自定义警报。 为此,我在我的UIViewController的xib文件中创建了一个UIView:
我为此视图添加了一些@property:
// Custom iOS 7 Alert View
@property (nonatomic, weak) IBOutlet UIView *supportViewPopup; // My UIView
@property (nonatomic, weak) IBOutlet UIView *supportViewPopupBackground; // The grey view
@property (nonatomic, weak) IBOutlet UIView *supportViewPopupAction; // The white view with outlets
// Property for customize the UI of this alert (you can add other labels, buttons, tableview, etc.
@property (nonatomic, weak) IBOutlet UIButton *buttonOK;
@property (nonatomic, weak) IBOutlet UIButton *buttonCancel;
@property (nonatomic, weak) IBOutlet UILabel *labelDescription;
在我的viewDidLoad上:
- (void)viewDidLoad
{
[super viewDidLoad];
// Support View
self.supportViewPopupAction.layer.cornerRadius = 5.0f;
self.supportViewPopupAction.layer.masksToBounds = YES;
// Add Support View
[self.view addSubview:self.supportViewPopup];
// Center Support view
self.supportViewPopup.center = self.view.center;
// Alpha
self.supportViewPopup.alpha = 0.0f;
self.supportViewPopupBackground.alpha = 0.0f;
self.supportViewPopupAction.alpha = 0.0f;
}
显示弹出窗口的操作:
- (IBAction)displayPopup
{
// Support View
self.supportViewPopup.alpha = 1.0f;
self.supportViewPopupBackground.alpha = 0.5f;
// Animation
[UIView animateWithDuration:0.5f
animations:^{
self.supportViewPopupAction.alpha = 1.0f;
}];
}
解雇Popup的行动:
- (IBAction)dismissModal
{
// Animation
[UIView animateWithDuration:0.5f
animations:^{
self.supportViewPopup.alpha = 0.0f;
self.supportViewPopupBackground.alpha = 0.0f;
self.supportViewPopupAction.alpha = 0.0f;
}];
}
因此,您可以使用按钮,表格视图,标签,集合视图等配置您想要的supportViewPopupAction
...
我花时间写这个警报视图的例子。我希望这会对你有帮助!
答案 1 :(得分:1)
自定义视图可以传递给PXAlertView:https://github.com/alexanderjarvis/PXAlertView
答案 2 :(得分:0)
UIButtons和UITextFields等一些组件看起来会有所不同,具体取决于版本,所以一切正常,我看到的问题将出现在包含当时的视图中。
我的建议是检测应用程序运行的版本,然后根据该版本绘制警报视图,或者只创建适合两者的自定义设计。
答案 3 :(得分:0)
根据iOS版本创建视图!
NSString *version = [[UIDevice currentDevice] systemVersion];
int major = [version intValue];
if (major < 7)
//alert for the iOS 6
else
//alert for the iOS 7