2009-08-19 42 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;