服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS自定义alertView提示框实例分享

iOS自定义alertView提示框实例分享

2021-01-17 17:25菜鸟Alex IOS

这是一款可以随意改变弹框背景色,按钮背景色,提示消息字体颜色的iOS alertView提示框,想要用于这样一款alertView提示框的朋友不要错过

本文实例为大家分享ios自定义alertview提示框,先上图,弹框的背景色,按钮背景色,提示的消息的字体颜色都可以改变

iOS自定义alertView提示框实例分享

利用单例实现丰富的自定义接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//
// pbalertcontroller.h
// pbalertdemo
//
// created by 裴波波 on 16/4/20.
// copyright © 2016年 裴波波. all rights reserved.
//
 
#import <uikit/uikit.h>
 
 
typedef void(^pbblock)();
 
@interface pbalertcontroller : uiviewcontroller
 
 
/** 设置alertview背景色 */
@property (nonatomic, copy) uicolor *alertbackgroundcolor;
/** 设置确定按钮背景色 */
@property (nonatomic, copy) uicolor *btnconfirmbackgroundcolor;
/** 设置取消按钮背景色 */
@property (nonatomic, copy) uicolor *btncancelbackgroundcolor;
/** 设置message字体颜色 */
@property (nonatomic, copy) uicolor *messagecolor;
 
/** 创建单例 */
+(instancetype)sharealertcontroller;
/** 弹出alertview以及点击确定回调的block */
-(void)alertviewcontrollerwithmessage:(nsstring *)message andblock:(pbblock) block;
 
@end

.m文件中初始化控件以及对alertview的控件的属性进行懒加载,确定初始的颜色.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
//
// pbalertcontroller.m
// pbalertdemo
//
// created by 裴波波 on 16/4/20.
// copyright © 2016年 裴波波. all rights reserved.
//
 
#import "pbalertcontroller.h"
 
/** 屏幕尺寸 */
#define kmainscreenbounds [uiscreen mainscreen].bounds
 
@interface pbalertcontroller ()
 
/** 蒙版 */
@property (nonatomic, strong) uiview *coverview;
/** 弹框 */
@property (nonatomic, strong) uiview *alertview;
/** 点击确定回调的block */
@property (nonatomic, copy) pbblock block;
 
@end
 
@implementation pbalertcontroller
 
- (void)viewdidload {
 
 [super viewdidload];
 self.view.backgroundcolor = [uicolor whitecolor];
}
 
-(void)alertviewcontrollerwithmessage:(nsstring *)message andblock:(pbblock) block{
 
 self.block = block;
 //创建蒙版
 uiview * coverview = [[uiview alloc] initwithframe:kmainscreenbounds];
 self.coverview = coverview;
 [self.view addsubview:coverview];
 coverview.backgroundcolor = [uicolor blackcolor];
 coverview.alpha = 0.7;
 
 //创建提示框view
 uiview * alertview = [[uiview alloc] init];
 alertview.backgroundcolor = self.alertbackgroundcolor;
 //设置圆角半径
 alertview.layer.cornerradius = 6.0;
 self.alertview = alertview;
 [self.view addsubview:alertview];
 alertview.center = coverview.center;
 alertview.bounds = cgrectmake(0, 0, kmainscreenbounds.size.width * 0.75, kmainscreenbounds.size.width * 0.75 * 1.5/ 3);
 
 //创建操作提示 label
 uilabel * label = [[uilabel alloc] init];
 [alertview addsubview:label];
 label.text = @"操作提示";
 label.font = [uifont systemfontofsize:19];
 label.textalignment = nstextalignmentcenter;
 cgfloat lblwidth = alertview.bounds.size.width;
 cgfloat lblhigth = 22;
 label.frame = cgrectmake(0, 0, lblwidth, lblhigth);
 
 //创建中间灰色分割线
 uiview * separateline = [[uiview alloc] init];
 separateline.backgroundcolor = [uicolor graycolor];
 [alertview addsubview:separateline];
 separateline.frame = cgrectmake(0, lblhigth + 1, alertview.bounds.size.width, 1);
 
 //创建message label
 uilabel * lblmessage = [[uilabel alloc] init];
 lblmessage.textcolor = self.messagecolor;
 [alertview addsubview:lblmessage];
 lblmessage.text = message;
 lblmessage.textalignment = nstextalignmentcenter;
 lblmessage.numberoflines = 2; //最多显示两行message
 cgfloat margin = 5;
 cgfloat msgx = margin;
 cgfloat msgy = lblhigth + 3;
 cgfloat msgw = alertview.bounds.size.width - 2 * margin;
 cgfloat msgh = 44;
 lblmessage.frame = cgrectmake(msgx, msgy, msgw, msgh);
 
 //创建确定 取消按钮
 cgfloat buttonwidth = (alertview.bounds.size.width - 4 * margin) * 0.5;
 cgfloat buttonhigth = 25;
 uibutton * btncancel = [[uibutton alloc] init];
 [alertview addsubview:btncancel];
 [btncancel settitlecolor:[uicolor whitecolor] forstate:uicontrolstatenormal];
 [btncancel settitle:@"取消" forstate:uicontrolstatenormal];
 [btncancel setbackgroundcolor:self.btncancelbackgroundcolor];
 btncancel.frame = cgrectmake(margin, alertview.bounds.size.height - margin - buttonhigth, buttonwidth, buttonhigth);
 btncancel.tag = 0;
 [btncancel addtarget:self action:@selector(didclickbtnconfirm:) forcontrolevents:uicontroleventtouchupinside];
 //确定按钮
 uibutton * btnconfirm = [[uibutton alloc] init];
 btnconfirm.tag = 1;
 [alertview addsubview:btnconfirm];
 [btnconfirm settitlecolor:[uicolor whitecolor] forstate:uicontrolstatenormal];
 [btnconfirm settitle:@"确定" forstate:uicontrolstatenormal];
 [btnconfirm setbackgroundcolor:self.btnconfirmbackgroundcolor];
 btnconfirm.frame = cgrectmake(alertview.bounds.size.width - margin - buttonwidth, alertview.bounds.size.height - margin - buttonhigth, buttonwidth, buttonhigth);
 [btnconfirm addtarget:self action:@selector(didclickbtnconfirm:) forcontrolevents:uicontroleventtouchupinside];
 
}
 
/** 点击确定 or 取消触发事件 */
-(void)didclickbtnconfirm:(uibutton *)sender{
 
 if (sender.tag == 0) {
  [self dismissviewcontrolleranimated:yes completion:nil];
  return;
 }
 self.block();
 [self dismissviewcontrolleranimated:yes completion:nil];
}
 
- (void)didreceivememorywarning {
 [super didreceivememorywarning];
}
 
static pbalertcontroller * instance = nil;
+(instancetype)sharealertcontroller{
 
 static dispatch_once_t oncetoken;
 dispatch_once(&oncetoken, ^{
  instance = [[pbalertcontroller alloc] init];
 });
 return instance;
}
 
-(uicolor *)alertbackgroundcolor{
 
 if (_alertbackgroundcolor == nil) {
  _alertbackgroundcolor = [uicolor colorwithred:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];
 }
 return _alertbackgroundcolor;
}
 
/** 确定按钮背景色 */
-(uicolor *)btnconfirmbackgroundcolor{
 
 if (_btnconfirmbackgroundcolor == nil) {
  _btnconfirmbackgroundcolor = [uicolor orangecolor];
 }
 return _btnconfirmbackgroundcolor;
}
 
/** 取消按钮背景色 */
-(uicolor *)btncancelbackgroundcolor{
 
 if (_btncancelbackgroundcolor == nil) {
  _btncancelbackgroundcolor = [uicolor bluecolor];
 }
 return _btncancelbackgroundcolor;
}
 
/** message字体颜色 */
-(uicolor *)messagecolor{
 
 if (_messagecolor == nil) {
  _messagecolor = [uicolor blackcolor];
 }
 return _messagecolor;
}
@end

在需要调用的地方进行调用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//
// viewcontroller.m
// pbalertdemo
//
// created by 裴波波 on 16/4/20.
// copyright © 2016年 裴波波. all rights reserved.
//
 
#import "viewcontroller.h"
#import "pbalertcontroller.h"
@interface viewcontroller ()
 
@end
 
@implementation viewcontroller
 
//点击按钮弹出提示框
- (ibaction)clickshowalertbtn:(id)sender {
 
 pbalertcontroller * alertvc = [pbalertcontroller sharealertcontroller];
 alertvc.messagecolor = [uicolor redcolor];
 [alertvc alertviewcontrollerwithmessage:@"这是一message沙哈" andblock:^{
  nslog(@"点击确定后执行的方法");
 }];
 alertvc.modaltransitionstyle = uimodaltransitionstylecrossdissolve;
 [self presentmodalviewcontroller:alertvc animated:yes];
}
 
@end

以上就是本文的全部内容,希望对大家学习ios程序设计有所帮助。

延伸 · 阅读

精彩推荐
  • IOSiOS中MD5加密算法的介绍和使用

    iOS中MD5加密算法的介绍和使用

    MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码。对输入信息生成唯一的128位散列值(32个字符)。这篇文...

    LYSNote5432021-02-04
  • IOSiOS自定义UICollectionViewFlowLayout实现图片浏览效果

    iOS自定义UICollectionViewFlowLayout实现图片浏览效果

    这篇文章主要介绍了iOS自定义UICollectionViewFlowLayout实现图片浏览效果的相关资料,需要的朋友可以参考下...

    jiangamh8882021-01-11
  • IOS详解iOS中多个网络请求的同步问题总结

    详解iOS中多个网络请求的同步问题总结

    这篇文章主要介绍了详解iOS中多个网络请求的同步问题总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    liang199111302021-03-15
  • IOSiOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)

    iOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和

    这篇文章主要介绍了iOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)的相关资料,需要的朋友可以参考下...

    CodingFire13652021-02-26
  • IOSiOS开发之视图切换

    iOS开发之视图切换

    在iOS开发中视图的切换是很频繁的,独立的视图应用在实际开发过程中并不常见,除非你的应用足够简单。在iOS开发中常用的视图切换有三种,今天我们将...

    执着丶执念5272021-01-16
  • IOSiOS实现控制屏幕常亮不变暗的方法示例

    iOS实现控制屏幕常亮不变暗的方法示例

    最近在工作中遇到了要将iOS屏幕保持常亮的需求,所以下面这篇文章主要给大家介绍了关于利用iOS如何实现控制屏幕常亮不变暗的方法,文中给出了详细的...

    随风13332021-04-02
  • IOSiOS开发技巧之状态栏字体颜色的设置方法

    iOS开发技巧之状态栏字体颜色的设置方法

    有时候我们需要根据不同的背景修改状态栏字体的颜色,下面这篇文章主要给大家介绍了关于iOS开发技巧之状态栏字体颜色的设置方法,文中通过示例代码...

    梦想家-mxj8922021-05-10
  • IOSiOS中UILabel实现长按复制功能实例代码

    iOS中UILabel实现长按复制功能实例代码

    在iOS开发过程中,有时候会用到UILabel展示的内容,那么就设计到点击UILabel复制它上面展示的内容的功能,也就是Label长按复制功能,下面这篇文章主要给大...

    devilx12792021-04-02