UIKit是高級別的圖形接口,它的API都是基于Objective-C的架忌。它能夠訪問繪圖吞彤、動畫、字體叹放、圖片等內(nèi)容饰恕。
繪制視圖
1.視圖繪制周期
drawRect
setNeedsDisplay
setNeedsDisplayInRect
觸發(fā)視圖重新繪制的動作有如下幾種
- 當(dāng)遮擋你的視圖的其他視圖被移動或刪除操作的時候
- 將視圖的hidden屬性聲明設(shè)置為No,使其從隱藏狀態(tài)變?yōu)榭梢?/li>
- 將視圖滾出屏幕井仰,然后再重新回到屏幕上
- 顯式調(diào)用視圖的setNeedsDisplay或者setNeedsDisplayInRect:方法
2.填充矩形
//為當(dāng)前的圖形上下文設(shè)置要填充的顏色
[[UIColor redColor] setFill];
//填充矩形函數(shù)-按照方才設(shè)置的顏色進(jìn)行填充矩形
UIRectFill(rect);
3.填充與描邊
UIKit提供非陈袂叮基本的繪圖功能,主要的API有
- UIRectFill(CGRect rect)糕档,填充矩形函數(shù)
- UIRectFrame(CGRect rect)莉恼,矩形描邊函數(shù)
- UIBezierPath拌喉,繪制常見路徑類速那,包括線段、弧線尿背、矩形端仰、圓角矩形和橢圓的方法。
UIKit雖然提供了UIBezierPath等類田藐,但是對于線段荔烧、漸變,陰影汽久,反鋸齒等高級特性支持還是不及Quartz 2D
//設(shè)置描邊顏色
[[UIColor blackColor] setStroke];
CGRect frame = CGRectMake(20, 30, 100, 300);
//矩形描邊函數(shù)
UIRectFrame(frame);
4.繪制圖像和文本
/*UIImage類中繪制圖像主要的方法*/
//-drawAtPoint:(CGPoint)point 設(shè)置繪制定點(diǎn)
//-drawInRect:(CGRect)rect 圖片繪制在指定的矩形里
//-drawAsPatternInRect:(CGRect)rect 在指定的矩形里平鋪繪制圖片鹤竭,如果圖片大小超出了指定的矩形,形式上與-drawAtPoint:方法類似景醇,如果圖片大小小于指定的矩形臀稚,就會有平鋪的效果
- (void)drawImage
{
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"photo" ofType:@"jpg"];
UIImage *myImageObj = [[UIImage alloc] initWithContentsOfFile:imagePath];
[myImageObj drawInRect:CGRectMake(0, 40, 320, 400)];
}
把圖片放在矩形中顯示,由于矩形高度比例與圖片的原始比例不一樣導(dǎo)致圖片變形三痰,這是使用drawInRect:方法進(jìn)行繪制圖片時需要注意的吧寺。
/*NSString類中繪制文本主要的方法*/
//-(void)drawAtPoint:(CGPoint)point withAttributes:(NSDictionary *)attrs 文本在指定點(diǎn)繪制
//-(void)drawInRect:(CGRect) withAttributes:(NSDictionary *)attrs 文本在指定的矩形里繪制
- (void)drawString
{
NSString *s = @"我的小馬";
UIFont *font = [UIFont systemFontOfSize:14.0];
NSDictionary *attr = @{NSFontAttributeName:font};
[s drawAtPoint:CGPointMake(100, 20) withAttributes:attr];
}