博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发之iOS6.0\iOS7.0\iOS8.0的UIAlertView message 文字对齐设置
阅读量:5162 次
发布时间:2019-06-13

本文共 4186 字,大约阅读时间需要 13 分钟。

            是不是发现原来这段代码:

#pragma mark -

#pragma mark - alert delegate

- (void) willPresentAlertView:(UIAlertView *)alertView

{

   for (UIView *subViewin alertView.subviews)

    {

       UILabel *tmpLabel = (UILabel *)subView;

        tmpLabel.textAlignment =NSTextAlignmentLeft;

    }

}

在iOS7.0及以上版本不能用(说明苹果对私有api管理越来越严格,猜测),如果还想uialertview文字对其要费一些心思了。

 

如果你有这样的需求:

1>message 信息显示居左对齐,如下图(iOS6.0和iOS7.1显示)

 

         

 

2>在iOS7.0以下版本标题居中,message居左(如上图)。

 

我们对上述代理方法稍作更改如下:

 

#pragma mark -

#pragma mark - alert delegate

- (void) willPresentAlertView:(UIAlertView *)alertView

{

    //由于不希望标题也居左

   NSInteger labelIndex = 1;

    //在ios7.0一下版本这个方法是可以的

   for (UIView *subViewin alertView.subviews)

    {

        if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1)

        {

           if ([subView isKindOfClass: [UILabelclass]])

            {

               if (labelIndex > 1)

                {

                   UILabel *tmpLabel = (UILabel *)subView;

                    tmpLabel.textAlignment =NSTextAlignmentLeft;

                }

               //过滤掉标题

                labelIndex ++;

            }

        }

    }

}

但这只能在ios7.0以下版本可以生效;如果是8.0,处理方式还不一样,具体如下:

 

 

- (void) showAlertWithMessage:(NSString *) message

{

    //8.0

    if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {

        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"ffff"message:message preferredStyle:UIAlertControllerStyleAlert];

        

        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];

        //paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;

        paragraphStyle.alignment = NSTextAlignmentLeft;

        //行间距

        paragraphStyle.lineSpacing = 5.0;

        

        NSDictionary * attributes = @{NSFontAttributeName : [UIFont systemFontOfSize:18.0], NSParagraphStyleAttributeName : paragraphStyle};

        NSMutableAttributedString *attributedTitle = [[NSMutableAttributedString alloc] initWithString:message];

        [attributedTitle addAttributes:attributes range:NSMakeRange(0, message.length)];

        [alertController setValue:attributedTitle forKey:@"attributedMessage"];//attributedTitle\attributedMessage

        //end ---

        

        

        UIAlertAction *defaultAction1 = [UIAlertAction actionWithTitle:@"cancel"

                                                                style: UIAlertActionStyleDefault

                                                              handler:^(UIAlertAction *action) {

                                                                  UITextField *textField = alertController.textFields[0];

                                                                  NSLog(@"text was %@", textField.text);

                                                              }];

        UIAlertAction *defaultAction2 = [UIAlertAction actionWithTitle:@"ok"

                                                                style: UIAlertActionStyleDefault

                                                              handler:^(UIAlertAction *action) {

                                                                  NSLog(@"ok btn");

                                                                  

                                                                  [alertControllerdismissViewControllerAnimated:YES completion:nil];

 

                                                              }];

 

        [alertController addAction:defaultAction1];

        [alertController addAction:defaultAction2];

        //添加textfield

 

        UIViewController *rootViewController = [UIApplicationsharedApplication].keyWindow.rootViewController;

        [rootViewController presentViewController:alertController animated: YES completion: nil];

 

    }else{

        

        UIAlertView *tmpAlertView = [[UIAlertView alloc] initWithTitle:@"测试换行"

                                                               message:message

                                                              delegate:self

                                                     cancelButtonTitle:nil

                                                     otherButtonTitles:@"知道了", nil];

        

        //如果你的系统大于等于7.0

         

        if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)

        {

            CGSize size = [self.messageString sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:CGSizeMake(240, 1000) lineBreakMode:NSLineBreakByTruncatingTail];

            

            UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 240, size.height)];

            textLabel.font = [UIFont systemFontOfSize:15];

            textLabel.textColor = [UIColor blackColor];

            textLabel.backgroundColor = [UIColor clearColor];

            textLabel.lineBreakMode = NSLineBreakByWordWrapping;

            textLabel.numberOfLines = 0;

            textLabel.textAlignment = NSTextAlignmentLeft;

            textLabel.text = self.messageString;

            [tmpAlertView setValue:textLabel forKey:@"accessoryView"];

            

            //这个地方别忘了把alertview的message设为空

            tmpAlertView.message = @"";

            

        }

        

        [tmpAlertView show];

    }

    

}

 

这样的话就可以了。

 

调用这个方法:

 

- (void)viewDidLoad

{

    [superviewDidLoad];

    

    self.view.backgroundColor = [UIColorgrayColor];

    

    self.messageString =@"1.第一行我是3个子\n2.第二行我是好几个字反正目的是为了和第一行区分开来\n3.哈哈我是陪衬的";

    

   UIButton *alertBtn = [[UIButtonalloc] initWithFrame:CGRectMake(0,200, 320, 40)];

    [alertBtn setTitle:@"点我啊,我会alert" forState:UIControlStateNormal];

    alertBtn.backgroundColor = [UIColorredColor];

    [alertBtn addTarget:selfaction:@selector(alertBtnTapped)forControlEvents:UIControlEventTouchUpInside];

    [self.viewaddSubview:alertBtn];

 

}

这里别忘声明一个属性self.messageString

 

转载于:https://www.cnblogs.com/lys-iOS-study/p/5690552.html

你可能感兴趣的文章
STL priority_queue<> 用法 <转>
查看>>
POJ-3009 Curling 2.0 简单BFS
查看>>
vs 2010 快捷键
查看>>
ref用于类类型
查看>>
canvas
查看>>
Balanced Binary Tree
查看>>
java学习------环境安装与配置
查看>>
日期时间函数
查看>>
Testing from Eclipse with ADT 翻译
查看>>
五句话搞定JavaScript作用域(ES5)
查看>>
UVA1602
查看>>
清理系统垃圾代码 李德鹏
查看>>
$_SERVER 等超全局数组的用法 $_COOKIE $_GET $_SESSION
查看>>
20155308 加分题-mybash的实现(第五周)
查看>>
C#调用R语言
查看>>
nodeJs是什么
查看>>
Oracle数据库sys和system用户的默认密码及如何修改密码
查看>>
网络I/O模型--06异步I/O
查看>>
Individual Project - Word frequency program - Multi Thread And Optimization
查看>>
hdu 4960 数列合并
查看>>