iOS自定义提示弹出框实现类似UIAlertView的效果

下面我就来详细讲解一下“iOS自定义提示弹出框实现类似UIAlertView的效果”的完整攻略。

第一步:创建一个背景视图

我们首先需要创建一个背景视图,用于展示提示弹出框。可以使用UIView或者UIControl来实现,具体代码如下:

UIView *bgView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
bgView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
[[UIApplication sharedApplication].keyWindow addSubview:bgView];

在以上代码中,我们创建了一个UIView对象,设置了它的frame为屏幕大小,并设置了它的背景颜色为灰色半透明。最后将这个背景视图添加到主窗口上。

第二步:创建一个提示弹出框

接下来,我们需要在背景视图上创建一个提示弹出框。可以使用UIView来实现,具体代码如下:

UIView *alertView = [[UIView alloc] initWithFrame:CGRectMake(50, 200, [UIScreen mainScreen].bounds.size.width - 100, 200)];
alertView.backgroundColor = [UIColor whiteColor];
alertView.layer.cornerRadius = 10;
bgView.userInteractionEnabled = YES;
[bgView addSubview:alertView];

在以上代码中,我们创建了一个UIView对象,设置了它的frame为屏幕宽度-100,高度为200,居中显示。并将其背景颜色设置为白色,圆角设置为10,并且将其添加到背景视图上。

第三步:添加提示信息

接下来,我们需要向提示弹出框中添加提示信息,可以使用UILabel来实现,具体代码如下:

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, alertView.bounds.size.width - 20, 30)];
titleLabel.text = @"提示信息";
titleLabel.textAlignment = NSTextAlignmentCenter;
[alertView addSubview:titleLabel];

UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(titleLabel.frame) + 10, alertView.bounds.size.width - 20, 60)];
messageLabel.text = @"这是一个自定义提示弹出框的示例";
messageLabel.textAlignment = NSTextAlignmentCenter;
[alertView addSubview:messageLabel];

在以上代码中,我们分别创建了两个UILabel对象,用于展示标题和提示信息。并且将它们添加到提示弹出框中。

第四步:添加按钮

最后一步,我们需要向提示弹出框中添加按钮,用于用户的操作。可以使用UIButton来实现,具体代码如下:

UIButton *cancelButton = [[UIButton alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(messageLabel.frame) + 10, alertView.bounds.size.width / 2 - 20, 40)];
[cancelButton setTitle:@"取消" forState:UIControlStateNormal];
cancelButton.backgroundColor = [UIColor redColor];
[cancelButton addTarget:self action:@selector(cancelButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[alertView addSubview:cancelButton];

UIButton *okButton = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetMaxX(cancelButton.frame) + 20, CGRectGetMaxY(messageLabel.frame) + 10, alertView.bounds.size.width / 2 - 20, 40)];
[okButton setTitle:@"确定" forState:UIControlStateNormal];
okButton.backgroundColor = [UIColor greenColor];
[okButton addTarget:self action:@selector(okButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[alertView addSubview:okButton];

在以上代码中,我们创建了两个UIButton对象,用于展示“取消”和“确定”按钮,并且将它们添加到提示弹出框中。同时我们也为按钮添加了点击事件,分别为cancelButtonClicked:和okButtonClicked:。

至此,我们的自定义提示弹出框已经实现了。可以根据实际需要进行调整和修改。

下面提供两个示例:

示例一:展示一个警告框,并打印用户的操作结果

UIView *bgView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
bgView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
[[UIApplication sharedApplication].keyWindow addSubview:bgView];

UIView *alertView = [[UIView alloc] initWithFrame:CGRectMake(50, 200, [UIScreen mainScreen].bounds.size.width - 100, 200)];
alertView.backgroundColor = [UIColor whiteColor];
alertView.layer.cornerRadius = 10;
bgView.userInteractionEnabled = YES;
[bgView addSubview:alertView];

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, alertView.bounds.size.width - 20, 30)];
titleLabel.text = @"警告";
titleLabel.textAlignment = NSTextAlignmentCenter;
[alertView addSubview:titleLabel];

UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(titleLabel.frame) + 10, alertView.bounds.size.width - 20, 60)];
messageLabel.text = @"确定删除该文件吗?";
messageLabel.textAlignment = NSTextAlignmentCenter;
[alertView addSubview:messageLabel];

UIButton *cancelButton = [[UIButton alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(messageLabel.frame) + 10, alertView.bounds.size.width / 2 - 20, 40)];
[cancelButton setTitle:@"取消" forState:UIControlStateNormal];
cancelButton.backgroundColor = [UIColor redColor];
[cancelButton addTarget:self action:@selector(cancelButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[alertView addSubview:cancelButton];

UIButton *okButton = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetMaxX(cancelButton.frame) + 20, CGRectGetMaxY(messageLabel.frame) + 10, alertView.bounds.size.width / 2 - 20, 40)];
[okButton setTitle:@"确定" forState:UIControlStateNormal];
okButton.backgroundColor = [UIColor greenColor];
[okButton addTarget:self action:@selector(okButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[alertView addSubview:okButton];

- (void)cancelButtonClicked:(UIButton *)sender {
    [sender.superview.superview removeFromSuperview];
    NSLog(@"用户取消了删除操作");
}

- (void)okButtonClicked:(UIButton *)sender {
    [sender.superview.superview removeFromSuperview];
    NSLog(@"用户确定了删除操作");
}

示例二:展示一个输入框,并保存用户输入的内容

UIView *bgView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
bgView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
[[UIApplication sharedApplication].keyWindow addSubview:bgView];

UIView *alertView = [[UIView alloc] initWithFrame:CGRectMake(50, 200, [UIScreen mainScreen].bounds.size.width - 100, 200)];
alertView.backgroundColor = [UIColor whiteColor];
alertView.layer.cornerRadius = 10;
bgView.userInteractionEnabled = YES;
[bgView addSubview:alertView];

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, alertView.bounds.size.width - 20, 30)];
titleLabel.text = @"输入信息";
titleLabel.textAlignment = NSTextAlignmentCenter;
[alertView addSubview:titleLabel];

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(titleLabel.frame) + 10, alertView.bounds.size.width - 20, 40)];
textField.placeholder = @"请输入内容";
textField.borderStyle = UITextBorderStyleRoundedRect;
[alertView addSubview:textField];

UIButton *cancelButton = [[UIButton alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(textField.frame) + 10, alertView.bounds.size.width / 2 - 20, 40)];
[cancelButton setTitle:@"取消" forState:UIControlStateNormal];
cancelButton.backgroundColor = [UIColor redColor];
[cancelButton addTarget:self action:@selector(cancelButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[alertView addSubview:cancelButton];

UIButton *okButton = [[UIButton alloc] initWithFrame:CGRectMake(CGRectGetMaxX(cancelButton.frame) + 20, CGRectGetMaxY(textField.frame) + 10, alertView.bounds.size.width / 2 - 20, 40)];
[okButton setTitle:@"确定" forState:UIControlStateNormal];
okButton.backgroundColor = [UIColor greenColor];
[okButton addTarget:self action:@selector(okButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[alertView addSubview:okButton];

- (void)cancelButtonClicked:(UIButton *)sender {
    [sender.superview.superview removeFromSuperview];
}

- (void)okButtonClicked:(UIButton *)sender {
    NSString *inputText = [(UITextField *)(sender.superview.subviews[1]) text];
    NSLog(@"用户输入的内容为:%@", inputText);
    [sender.superview.superview removeFromSuperview];
}

以上就是“iOS自定义提示弹出框实现类似UIAlertView的效果”的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:iOS自定义提示弹出框实现类似UIAlertView的效果 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 办公室电脑数据防泄密、企业重要文档防复制、商业机密防泄漏解决方案

    办公室电脑数据防泄密解决方案 1. 硬件加密 如果办公室电脑中存储了重要的数据,我们建议用硬件加密来保护数据安全。常见的硬件加密方案有: 加密外置硬盘:可以选择带有硬件加解密功能的移动硬盘,例如西部数据的WD My Passport硬盘。该硬盘具有密码保护、硬件加密等功能,确保数据安全。 加密USB存储设备:有些USB存储设备可以使用密码来保护数据,例如金士…

    other 2023年6月27日
    00
  • 关于python:以全精度打印numpy.float64

    在Python中,使用numpy.float64类型的变量时,有时需要以全精度打印它们的值。以下是以全精度打印numpy.float64的完整攻略: 导入numpy模块 在使用numpy.float64之前,需要先导入numpy模块。可以使用以下命令导入numpy模块: import numpy as np 设置打印选项 在打印numpy.float64变量…

    other 2023年5月8日
    00
  • Gradle:修改默认的Build配置文件名方式

    修改Gradle默认的Build配置文件名方式可以通过修改build.gradle文件来完成。下面是详细的步骤: 打开项目根目录下的build.gradle文件; 在文件顶部添加以下代码: buildFileName = ‘new-build-name.gradle’ 这里的 new-build-name.gradle 是你想要设置的新的构建文件名,可以根据…

    other 2023年6月25日
    00
  • Python用SSH连接到网络设备

    好的! 以下是Python用SSH连接到网络设备的完整攻略: 什么是SSH SSH(Secure Shell) 是一项协议标准和相应的网络服务,用于在无安全保证的网络上为网络服务提供安全的传输和其他安全服务。SSH协议最初由芬兰的SSH Communications Security Corp.使用自己公司的加密措施而设计,后来由IETF(互联网工程任务组)…

    other 2023年6月27日
    00
  • Asp.net第三方控件ComboBox组合框介绍

    Asp.net第三方控件ComboBox组合框介绍 介绍 ComboBox组合框是一种常见的控件,可以用于设置多个选项,并且只能选择其中一个选项。在Asp.net中,有可以使用第三方控件实现ComboBox组合框的功能。 安装第三方控件 在Asp.net中使用第三方控件前,需要先安装控件包。以Telerik控件为例,按照以下步骤安装: 找到Telerik官网…

    other 2023年6月27日
    00
  • ora-28000帐户已被锁定的解决方法

    简介 ORA-28000是Oracle数据库中的一个错误代码,表示用户帐户已被锁定。这通常是由于用户多次尝试使用错误的凭据数据库而导致的。在本攻略中,我们将介绍如何解决ORA-28000错误,并提供两个示例说明。 解决方法 以下是解ORA-28000错误的方法: 方法1:解锁用户帐户 可以使用以下命令解锁用户帐户: ALTER USER username A…

    other 2023年5月6日
    00
  • centos7安装显卡驱动方法

    以下是关于“CentOS 7安装显卡驱动方法”的完整攻略: 步骤1:检查显卡型号 首先,需要检查显卡型号。可以使用以下命令来检查显卡型号: lspci | grep -E "VGA|3D" 在上面的代码中,我们使用了lspci命令来列出PCI设备,并使用grep命令来过滤出显卡设备。 步骤2:下载显卡驱动 接下来,下载显卡驱动。可以从显卡…

    other 2023年5月7日
    00
  • python递归&迭代方法实现链表反转

    接下来我将详细讲解如何使用Python的递归和迭代方法实现链表的反转。 什么是链表反转 链表反转(reverse a linked list)指的是将链表中的所有节点的指针方向都倒转,即原来指向下一个节点的指针变为指向前一个节点,这样可以让链表的尾部变为头部,实现链表的逆序。 实现方法 链表反转可以使用递归和迭代两种方法进行实现。 递归方法 递归反转链表的思…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部