UIKit繪制

UIKit是高級別的圖形接口,它的API都是基于Objective-C的。它能夠訪問繪圖、動畫、字體、圖片等內容。

繪制視圖

1.視圖繪制周期

    drawRect
        setNeedsDisplay
        setNeedsDisplayInRect

觸發視圖重新繪制的動作有如下幾種

  • 當遮擋你的視圖的其他視圖被移動或刪除操作的時候
  • 將視圖的hidden屬性聲明設置為No,使其從隱藏狀態變為可見
  • 將視圖滾出屏幕,然后再重新回到屏幕上
  • 顯式調用視圖的setNeedsDisplay或者setNeedsDisplayInRect:方法

2.填充矩形

    //為當前的圖形上下文設置要填充的顏色
    [[UIColor redColor] setFill];
    //填充矩形函數-按照方才設置的顏色進行填充矩形
    UIRectFill(rect);

3.填充與描邊

UIKit提供非常基本的繪圖功能,主要的API有

  • UIRectFill(CGRect rect),填充矩形函數
  • UIRectFrame(CGRect rect),矩形描邊函數
  • UIBezierPath,繪制常見路徑類,包括線段、弧線、矩形、圓角矩形和橢圓的方法。

UIKit雖然提供了UIBezierPath等類,但是對于線段、漸變,陰影,反鋸齒等高級特性支持還是不及Quartz 2D

    //設置描邊顏色
    [[UIColor blackColor] setStroke];
    CGRect frame = CGRectMake(20, 30, 100, 300);
    //矩形描邊函數
    UIRectFrame(frame);

4.繪制圖像和文本

/*UIImage類中繪制圖像主要的方法*/
//-drawAtPoint:(CGPoint)point   設置繪制定點
//-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)];
}

把圖片放在矩形中顯示,由于矩形高度比例與圖片的原始比例不一樣導致圖片變形,這是使用drawInRect:方法進行繪制圖片時需要注意的。

/*NSString類中繪制文本主要的方法*/
//-(void)drawAtPoint:(CGPoint)point withAttributes:(NSDictionary *)attrs    文本在指定點繪制
//-(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];
    
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容