2009-08-19 43 views

回答

3

对于只有中心,左侧和右侧的文本,没有对齐对齐的设置。如果你想在每一行有相同数量的字符或类似的东西时进行合理对齐,你可以格式化输入的文字,以便在x个字符或单词之后有回车符,或类似的东西。

+0

当然,那里有一个页面,您可以建议在苹果网站上的功能,我不记得它在哪里tho =/ – Daniel 2009-08-19 18:04:34

+1

它在这里http://bugreport.apple.com – Jasarien 2010-03-03 14:36:29

12

我已经找到了一个可行的解决方案。首先,你需要改变你的UITextView,并使用UIWebView来代替。

Details.h

@interface Details : UIViewController { 
    IBOutlet UIWebView *descripcion; 
} 

@property (nonatomic, retain) UIWebView *descripcion; 

然后,加载UIWebView如下:

Details.m

[descripcion loadHTMLString:[NSString stringWithFormat:@"<div align='justify'>%@<div>",YOUR_TEXT] baseURL:nil]; 
+1

但是,然后造型超出whi简单的黑色文本te背景需要通过CSS /内联html样式而不是可可属性来完成。 – autodidakto 2011-06-21 20:42:02

6

还有另一种选择。 CATextLayer

它明确支持对齐对齐。 它的重量很轻,比UIWebView还快。因为它实质上是一个薄于CoreText的薄层,因此不需要像UIWebView这样的繁重布局过程。

或者你可以使用另外一个选项,直接使用低级CoreText框架。

无论如何,它们不支持文本编辑。如果你需要它,你必须自己实现它。

68

我知道这是一个老问题,但现在我们有大约消息:

UITextView *textView = // init your text view 
textView.textAlignment = NSTextAlignmentJustified; 

就是这样!

UPDATE:在iOS 6及以上

+0

Thx为更新,我忘了提及这一点。 – fencingCode 2012-11-22 16:10:12

+0

你知道为什么这只适用于iOS6而不适用于iOS7吗? NSTextAlignmentJustified在我的UILabel不适用于iOS7。 – Rambatino 2013-10-12 18:08:06

+0

@MarkRamotowski,请尝试使用UITextView。适用于我在iOS6和iOS7 – Sam 2013-11-07 11:59:41

10

这仅适用于有解决方案:

NSString *text1 = @"Sample text : A his is my weblog in English, German and Korean. If you want to know more about a pizza stone once it’s cooled down."; 

NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
[style setAlignment: kCTJustifiedTextAlignment]; 

NSAttributedString * subText1 = [[NSAttributedString alloc] initWithString:text1 attributes:@{ 
               NSParagraphStyleAttributeName : style 
            }]; 

_myUiTextView.attributedText = subText1; 
+1

这仅限于iOS6。 – Shai 2013-03-20 12:23:25

3

从右到左的语言,如:波斯

UITextPosition *beginning = textview.beginningOfDocument; 
    UITextPosition *start = [textview positionFromPosition:beginning offset:0]; 
    UITextPosition *end = [textview positionFromPosition:start offset:[textview.text length]]; 

    UITextRange *textRange = [textview textRangeFromPosition:start toPosition:end]; 
    [textview setBaseWritingDirection:UITextWritingDirectionRightToLeft forRange:textRange]; 

    textview.textAlignment = NSTextAlignmentJustified;