個人博客: LiCheng的博客
引言:
關(guān)于提示框, 系統(tǒng)自帶的提示框有時可能滿足不了我們的需求, 比如一個提示框的取消按鈕我需要灰色字體顯示, 這時候就需要自定義提示框的樣式了。
蘋果自iOS8開始燥筷,就已經(jīng)廢棄了之前用于界面提醒的UIAlertView類以及UIActionSheet,取而代之的是UIAlertController以及UIAlertAction,從實(shí)際使用情況來看,蘋果把之前不同類型/樣式的通知實(shí)現(xiàn)方法進(jìn)行了統(tǒng)一盾沫,簡化了有關(guān)提醒功能的實(shí)現(xiàn)嗤疯。
UIAlertController的基本使用
一個簡單的提示框:
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"標(biāo)題" message:@"正文" preferredStyle:(UIAlertControllerStyleAlert)];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"確定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
// 點(diǎn)擊確定按鈕時 要進(jìn)行的操作可以寫到這里
}];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:^(UIAlertAction * _Nonnull action) {
// 點(diǎn)擊取消按鈕時 要進(jìn)行的操作可以寫到這里
}];
[alert addAction:cancelAction];
[alert addAction:okAction];
[self presentViewController:alert animated:YES completion:nil];
自定義UIAlertController
主要是使用kvc的方式來自定義UIAlertController的樣式:
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"標(biāo)題" message:@"內(nèi)容" preferredStyle:UIAlertControllerStyleAlert];
// 使用富文本來改變alert的title字體大小和顏色
NSMutableAttributedString *titleText = [[NSMutableAttributedString alloc] initWithString:@"這里是標(biāo)題"];
[titleText addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:24] range:NSMakeRange(0, 2)];
[titleText addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 2)];
[alert setValue:titleText forKey:@"attributedTitle"];
// 使用富文本來改變alert的message字體大小和顏色
// NSMakeRange(0, 2) 代表:從0位置開始 兩個字符
NSMutableAttributedString *messageText = [[NSMutableAttributedString alloc] initWithString:@"這里是正文信息"];
[messageText addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:10] range:NSMakeRange(0, 6)];
[messageText addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 2)];
[messageText addAttribute:NSForegroundColorAttributeName value:[UIColor brownColor] range:NSMakeRange(3, 3)];
[alert setValue:messageText forKey:@"attributedMessage"];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
// 設(shè)置按鈕背景圖片
UIImage *accessoryImage = [[UIImage imageNamed:@"selectRDImag.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[cancelAction setValue:accessoryImage forKey:@"image"];
// 設(shè)置按鈕的title顏色
[cancelAction setValue:[UIColor lightGrayColor] forKey:@"titleTextColor"];
// 設(shè)置按鈕的title的對齊方式
[cancelAction setValue:[NSNumber numberWithInteger:NSTextAlignmentLeft] forKey:@"titleTextAlignment"];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"確認(rèn)" style:UIAlertActionStyleDefault handler:nil];
[alert addAction:okAction];
[alert addAction:cancelAction];
[self presentViewController:alert animated:YES completion:nil];
效果圖:
demo下載地址:CustomAlertControllerDemo
<br />
GitHub: https://github.com/LiCheng244/LCUtils
個人博客: http://www.licheng244.com/