2014-04-14 87 views
0

我現在感覺非常愚蠢。iOS如何在UIViewController中繪製文字

我想繪製文本到UIViewController。

我使用的Xcode 5,並開始與一個簡單的單頁的項目,並沒有做什麼別的,只是加入這個代碼到ViewController.m:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    CGRect myRect=CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height); 
    UIFont *myFont=[UIFont fontWithName:@"Helvetica" size:50]; 

    NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
    paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail; 
    paragraphStyle.alignment = NSTextAlignmentRight; 

    NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init]; 
    [attributes setObject:myFont forKey:NSFontAttributeName]; 
    [attributes setObject:paragraphStyle forKey:NSParagraphStyleAttributeName]; 
    [attributes setObject:[NSNumber numberWithFloat:4] forKey:NSStrokeWidthAttributeName]; 
    [attributes setObject:[UIColor whiteColor] forKey:NSStrokeColorAttributeName]; 
    [@"test" drawInRect:myRect withAttributes:attributes]; 

    // draw fill 
    [attributes removeObjectForKey:NSStrokeWidthAttributeName]; 
    [attributes removeObjectForKey:NSStrokeColorAttributeName]; 
    [attributes setObject:[UIColor blackColor] forKey:NSForegroundColorAttributeName]; 
    [@"test" drawInRect:myRect withAttributes:attributes]; 
} 

它運行沒有錯誤,但不會產生任何的文字 - 爲什麼?

+0

你只是在做這個練習來學習(如果是的話,對你有好處)?否則,你可以在視圖中放一個'UILabel',讓它處理你的文字。 –

+0

是的,試圖學習 - 我已經遇到了UILabels將字體下降到字體上的麻煩,所以我想我會看看是否可以自己繪製文本並消除問題。 – wayneh

回答

0

drawInRect方法不能與UIViewController工作。該方法是一種UIView方法,並且只有在您的課程是UIView課程或子類時纔有效。

因此,正如上面提到的,你可以設置一個UILabel的文本屬性和你喜歡的地方在屏幕上顯示出來。它應該給你同樣的效果。或者,您可以嘗試將子類更改爲UIView,但這可能需要對代碼進行更多修改。

+0

所以,如果我想在我的UIViewController中使用自動創建的視圖,它會工作嗎?如果是這樣,我將如何在視圖中使用Rect?或者我可以添加一個ImageView? – wayneh

+0

我沒有運用自動創建的視圖,如'self.view',或'UIImageView'與'drawInRect'方法。你可以在Core Graphics上使用'UIImageView'進行繪製,但是這可能不是你用繪圖文本尋找的東西。 – tfrank377

0

爲了增加tfrank377,你可以像

UILabel *addLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 30)]; 
    [self.view addSubview:addLabel]; 
    addLabel.text = @"Hello World"; 

,這將顯示在您的UIView文本編程方式添加標籤。

+0

謝謝,但由於上述其他錯誤,我正在嘗試除UILabels之外的其他內容。 – wayneh

+0

你能否舉一個下行者被切斷的例子嗎? – flooie

+0

當然 - 這是我問過的另一個問題。請注意,關鍵是不要縮小字體,直到問題消失 - 重點是顯示可能的最大字體... http://stackoverflow.com/questions/22897158/fonts-not-fitting-properly-in-的UILabel-伸或 - 伸裁剪 – wayneh