自定义视图,看起来像UIAlertView

时间:2013-10-01 14:31:28

标签: ios objective-c

我需要看起来像UIAlertView的东西(相同的背景透明且不是全屏),阻止其他UI部分并且有一些自定义内容。 这个自定义内容是:两个带标签的复选框和两个底部的YES / NO按钮。

UIAlertView进行子类化或自定义看起来并不实用(请参阅this answer),这很危险(Apple可以拒绝代码)。我正在考虑创建自己的自定义UIView(可能与UIViewController),但我不知道如何让它看起来像UIAlertView。我的意思是我想让它改变它的外观取决于iOS版本(iOS7)。

更新: 我可以放弃os版本依赖,它会很好,但这是附加功能 主要的问题是:有没有一种很好的方法来制作这样的视图,它看起来和感觉像UIAlertView没有大量的工作?自定义UIAlertView直接看起来很复杂和危险。

4 个答案:

答案 0 :(得分:19)

我创建了自己的自定义视图,看起来像iOS UIAlertView 7.使用该技术,您可以为iOS 6和iOS 7创建自定义警报。 为此,我在我的UIViewController的xib文件中创建了一个UIView:

enter image description here

我为此视图添加了一些@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