18

我有兴趣制作一个左对齐的 UIAlertView,其中包含几行,如公告列表,如下所示:

  • 1号线
  • 2号线
  • 3号线

这是我到目前为止所拥有的:

alert = [[UIAlertView alloc] initWithTitle: @"How to use buttons"
                                   message: @"line 1. line 2, line 3 "
                                  delegate: nil
                         cancelButtonTitle: @"OK"
                         otherButtonTitles: nil];

我还想将警报视图的颜色更改为红色。

4

5 回答 5

31

项目符号由 unicode 代码 0x2022 表示。我让它像这样使用“\n”换行:

UIAlertView *alert = [[UIAlertView alloc]
            initWithTitle: @"How to use buttons"
            message: [NSString stringWithFormat: @"%C line 1.\n %C line 2,\n %C line 3", (unichar) 0x2022, (unichar) 0x2022, (unichar) 0x2022];
            delegate: nil
            cancelButtonTitle:@"OK"
            otherButtonTitles:nil];

这应该适用于子弹。

对于左对齐,请执行以下操作:

NSArray *subViewArray = alertView.subviews;
for(int x = 0; x < [subViewArray count]; x++){

    //If the current subview is a UILabel...
    if([[[subViewArray objectAtIndex:x] class] isSubclassOfClass:[UILabel class]]) {
        UILabel *label = [subViewArray objectAtIndex:x];
        label.textAlignment = NSTextAlignmentLeft;
    }
}

总而言之:

  • "\n" 用于显示新行
  • [NSString stringWithFormat:@"%C Line n", (unichar) 0x2022];对于子弹
  • 对于对齐,遍历警报视图的子视图并确定哪些子视图是 的子类UILabel。然后使用 将标签的文本对齐方式更改为左对齐label.textAlignment = NSTextAlignmentLeft
  • 完成所有这些后,您就可以调用[alert show];.
于 2012-07-20T00:40:05.353 回答
4

左对齐:

 NSArray *subviewArray = alert.subviews;
for(int x = 0; x < [subviewArray count]; x++){

    if([[[subviewArray objectAtIndex:x] class] isSubclassOfClass:[UILabel class]]) {
        UILabel *label = [subviewArray objectAtIndex:x];
        label.textAlignment = UITextAlignmentLeft;
    }

要在警报视图后面显示红色背景:

alert.backgroundColor=[UIColor redColor];
于 2012-07-20T11:07:57.457 回答
2

确保使用 \ 而不是普通的 /。

alt + shift + 7(在我的键盘上)

\n

那应该这样做。:-)

于 2013-05-25T19:16:14.517 回答
1

对于新行和文本对齐,更喜欢@qegal 的答案,即一个是完美的,但是如果您想更改颜色或自定义警报视图,我可以使用一个很棒的类而不是系统的警报视图,只需检查一下,这肯定会有效. 即使它也可以帮助您获得带有对齐和项目符号列表的多行消息。

如果您在使用它时发现任何问题,请寻求帮助,我一定会帮助您。

快乐编码:)

于 2012-07-20T09:49:48.903 回答
1

\n您可以通过插入消息来创建新行。例如:

@"line 1.\nline 2,\nline 3"
于 2012-07-20T00:40:10.577 回答