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];
}
网友评论