有没有办法在iphone中制作一个子弹点列表?
如果您将项目符号列表复制并粘贴到IB中的UITextView中,则会显示该列表。无论如何以编程方式执行此操作?
谢谢
汤姆
答案 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()