• UIAlertView 或 UIAlertController message 文字对齐设置


    转发来自:http://blog.csdn.net/folish_audi/article/details/34087103

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

    #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"];//attributedTitleattributedMessage

            //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个子 2.第二行我是好几个字反正目的是为了和第一行区分开来 3.哈哈我是陪衬的";

        

       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

    源文件下载:http://download.csdn.NET/detail/folish_audi/7543541

  • 相关阅读:
    树(三)——自平衡二叉树(AVL)
    树(二)——二叉树
    10. IDENTITY属性使用小结
    09. 约束与索引的联系
    08. 删除重复&海量数据
    07. 分页写法小结
    06. 父子节点(树)遍历写法小结
    01. SQL Server 如何读写数据
    05. 取SQL分组中的某几行数据
    04. 字符串合并与拆分写法小结
  • 原文地址:https://www.cnblogs.com/nelsen-chen/p/6651050.html
Copyright © 2020-2023  润新知