這是繪製文本的代碼,但是這不是你一般文本添加到iOS中的畫面。在iOS中,添加文本到屏幕的型號一般由剛剛加入UILabel
到視圖控制器的視圖,例如,在viewDidLoad
,你可以這樣做:
- (void)viewDidLoad
{
[super viewDidLoad];
UILabel *label = [[UILabel alloc] initWithFrame:self.view.bounds];
label.textColor = [UIColor redColor];
label.font = [UIFont systemFontOfSize:24.0];
label.text = @"Hello";
[self.view addSubview:label];
// or, if you really wanted to use an attributed string:
//
// UILabel *label = [[UILabel alloc] initWithFrame:self.view.bounds];
// NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Hello"
// attributes:@{NSForegroundColorAttributeName : [UIColor redColor],
// NSFontAttributeName : [UIFont systemFontOfSize:24]}];
// [label setAttributedText:attributedString];
// [self.view addSubview:label];
}
在您需要此drawInRect
方法是當你在特殊情況下重新繪畫,例如在UIView
子類中。所以,你可以定義一個UIView
子類,並編寫使用您的代碼drawRect
方法:
例如,CustomView.h:
// CustomView.h
#import <UIKit/UIKit.h>
@interface CustomView : UIView
@end
而且CustomView.m:
// CustomView.m
#import "CustomView.h"
@implementation CustomView
- (void)drawRect:(CGRect)rect
{
[@"Hello" drawInRect:rect withAttributes:@{NSForegroundColorAttributeName : [UIColor redColor],
NSFontAttributeName : [UIFont systemFontOfSize:24]}];
}
@end
你可以然後在您的視圖控制器中添加一個CustomView
:
// ViewController.m
#import "ViewController.h"
#import "CustomView.h"
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
CustomView *customView = [[CustomView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:customView];
}
@end
正如你所看到的那樣,這有點麻煩,對於特殊情況很好,但是根據你與我們分享的內容,它比你可能需要考慮的要麻煩得多。一般來說,如果您只是想在viewDidLoad
的視圖中添加文字,您就不會使用drawInRect
方法。
來源
2014-02-11 22:09:30
Rob
你將不得不學習一大堆更似乎...去閱讀一些文檔。 drawInRect繪製到當前的上下文,而不是屏幕。假如代碼本身工作,這個代碼將工作,如果放入DrawRect:函數 – Jack