您的位置:首页 > 移动开发 > IOS开发

绘制图画

2016-07-16 07:39 288 查看
//

如果在绘图的时候需要用到定时器,通常

// NSTimer很少用于绘图,因为调度优先级比较低,并不会准时调用

- (void)awakeFromNib

{

   
//
创建定时器
//    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(timeChange) userInfo:nil repeats:YES];

   
CADisplayLink
*link = [CADisplayLink

displayLinkWithTarget:self

selector:@selector(timeChange)];

   

   
//
添加主运行循环

    [link
addToRunLoop:[NSRunLoop

mainRunLoop]

forMode:NSDefaultRunLoopMode];

}

// CADisplayLink:每次屏幕刷新的时候就会调用,屏幕一般一秒刷新60次

// 1秒

2次
static

int count =

0;

- (void)timeChange

{

   

   
//
注意:这个方法并不会马上调用drawRect,其实这个方法只是给当前控件添加刷新的标记,等下一次屏幕刷新的时候才会调用drawRect

    [self

setNeedsDisplay];

    

}

绘制头像圆角的时候尽量用这个方法,因为它能狗减少内存消耗.

 

// NO代表透明

   
UIGraphicsBeginImageContextWithOptions(self.size,

NO,

0.0);

   

   
//
获得上下文

   
CGContextRef
ctx =
UIGraphicsGetCurrentContext();

   

   
//
添加一个圆

   
CGRect
rect =
CGRectMake(0,

0,

self.size.width,

self.size.height);

   
CGContextAddEllipseInRect(ctx, rect);

   

   
//
裁剪

   
CGContextClip(ctx);

   

   
//
将图片画上去

    [self

drawInRect:rect];

   

   
UIImage
*image =
UIGraphicsGetImageFromCurrentImageContext();

   

   
UIGraphicsEndImageContext();

   

   
return image;

46.绘制图片,如果图片过大无法全部显示,可以让其从顶部显示.

       

//
开启图形上下文

        UIGraphicsBeginImageContextWithOptions(topic.pictureF.size,
YES,

0.0);

       

       
//
将下载完的image对象绘制到图形上下文

        CGFloat width = topic.pictureF.size.width;

        CGFloat height = width * image.size.height / image.size.width;

        [image drawInRect:CGRectMake(0,

0, width, height)];

       

       
//
获得图片

       
self.imageView.image = UIGraphicsGetImageFromCurrentImageContext();

       

       
//
结束图形上下文

        UIGraphicsEndImageContext();
    }];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS开发 it