iOS UIAlertController中Message和Title文字属性设置

iOS UIAlertController中Message和Title文字属性设置_第1张图片
美图镇楼
  • 首先,先放一个正常的UIAlertController:
    iOS UIAlertController中Message和Title文字属性设置_第2张图片
    8C6000A6-6EDE-4C89-BDE3-5CCEDBBDA4E2.png

    1.现在的titlemessage都是居中对齐的, 但是如果我们想让他左对齐或者右对齐该怎么做呢, 这里我查UIAlertController中的属性并没有titleLabelmessageLabel.说明这两个label是隐藏的.外界不能直接访问的.
    2.但是通过找UIAlertControllersubviews终于找到了
 UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"物品详情" message:@"轻便的移动电源很容易就电量耗尽,而大容量的移动电源往往都比较笨重,这样的体验远远比不上直接更换电池。\n对于许多 iPhone 重度使用者来说,手机续航时间不足是一个一直困扰着他们的问题,当然,从智能手机开始采用不可拆卸电池设计开始,这个问题就已经存在了。在电池技术没有突破的情况下,移动电源成为了解决这个问题的最佳方案。" preferredStyle:UIAlertControllerStyleAlert];
    UIView *subView1 = alertController.view.subviews[0];
    UIView *subView2 = subView1.subviews[0];
    UIView *subView3 = subView2.subviews[0];
    UIView *subView4 = subView3.subviews[0];
    UIView *subView5 = subView4.subviews[0];
    NSLog(@"%@",subView5.subviews);
    //取title和message:
    UILabel *title = subView5.subviews[0];
    UILabel *message = subView5.subviews[1];
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:nil];
    [alertController addAction:cancelAction];
    [self presentViewController:alertController animated:YES completion:nil];

3.控制台打印出subView5.subviews

iOS UIAlertController中Message和Title文字属性设置_第3张图片
BE8D95C9-F6A9-4B57-9F7E-F3BA3F101A3E.png

4.这样我们就可以拿到 titleLabelmessageLabel来做设置了

    //比如设置message内容居左:
    message.textAlignment = NSTextAlignmentLeft;
    title.textAlignment = NSTextAlignmentLeft;
  • 但是经过尝试发现,这个可修改的属性实在是太少了.如果还满足不了需求怎么办,比如改变字体颜色,大小等等...,这是可以考虑富文本
    1.先看一下效果:
    iOS UIAlertController中Message和Title文字属性设置_第4张图片
    A74554DA-0907-485D-8893-4FB8EDC7462B.png

    这里我们改变了titlemessage,cancelAction按钮的颜色,大小等等.
    2.其实很简单我直接上代码:
//修改title
    NSMutableAttributedString *alertControllerStr = [[NSMutableAttributedString alloc] initWithString:@"物品详情"];
    [alertControllerStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 2)];
    [alertControllerStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:17] range:NSMakeRange(0, 2)];
    [alertController setValue:alertControllerStr forKey:@"attributedTitle"];
    
    //修改message
    NSMutableAttributedString *alertControllerMessageStr = [[NSMutableAttributedString alloc] initWithString:@"轻便的移动电源很容易就电量耗尽,而大容量的移动电源往往都比较笨重,这样的体验远远比不上直接更换电池。"];
    [alertControllerMessageStr addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, 10)];
    [alertControllerMessageStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(11, 20)];
    [alertControllerMessageStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(20, 30)];
    [alertController setValue:alertControllerMessageStr forKey:@"attributedMessage"];
//修改按钮的颜色
    [cancelAction setValue:[UIColor orangeColor] forKey:@"titleTextColor"];
3.这个方法其实就是通过KVC来实现的.如果不懂得KVC可以看看iOS KVC简单理和iOS 用KVC来自定义Tabbar,如果不清楚富文本的可以看iOS 富文本.
  • 如有错误,欢迎雅正

你可能感兴趣的:(iOS UIAlertController中Message和Title文字属性设置)