iphone项目符号列表

时间:2010-09-26 17:19:10

标签: iphone uitextfield

有没有办法在iphone中制作一个子弹点列表?

如果您将项目符号列表复制并粘贴到IB中的UITextView中,则会显示该列表。无论如何以编程方式执行此操作?

谢谢

汤姆

3 个答案:

答案 0 :(得分:38)

“bullet”字符位于Unicode代码点U + 2022。您可以在包含@"\u2022"[NSString stringWithFormat:@"%C", 0x2022]

的字符串中使用它

“换行”字符位于Unicode代码点U + 000A,用作UIKit的换行符。您可以在包含@"\n"的字符串中使用它。

例如,如果您有一个字符串数组,则可以使用以下内容创建项目符号列表:

NSArray * items = ...;
NSMutableString * bulletList = [NSMutableString stringWithCapacity:items.count*30];
for (NSString * s in items)
{
  [bulletList appendFormat:@"\u2022 %@\n", s];
}
textView.text = bulletList;

它不会像“正确的”文字处理器那样缩进行。如果您的列表项包含换行符,那么“糟糕的事情”会发生(但您期望的是什么?)。

(Apple并不保证“\ uXXXX”在NSString文字中有效,但实际上如果你使用Apple的编译器,它们会这样做。)

答案 1 :(得分:4)

据我所知,在iPhone上实现这一目标(以及几乎任何其他格式化的富文本)的唯一方法是使用UIWebView并插入HTML代码,如下所示:

<ul>
     <li>Bullet</li>
</ul>

为了回应您的评论,UIWebViews可以通过以下代码安静来“美化”:

for(UIView* v in webView.subviews){
    if([v isKindOfClass:[UIScrollView class] ]){

        //disable bouncing
        UIScrollView* sv = (UIScrollView*) v;
        sv.alwaysBounceVertical = NO;
        sv.alwaysBounceHorizontal = NO;

        //disable scroll-shadows
        for (UIView *subView in [sv subviews])
            if ([[[subView class] description] isEqualToString:@"UIImageView"])
                subView.hidden = YES;
    }
}

我还没有提交,但我想它应该是“AppStore safe”。

答案 2 :(得分:1)

Swift-5

只需在Swift中编写 @tc 答案

let items: [String] = ["Point-1", "Point-2", "Point-3"]
var bulleLists: [String] = []
for item in items {
     bulleLists.append("\u{2022}" + item + "\n")
}
textview.text = bulleLists.joined()