zoukankan      html  css  js  c++  java
  • 自己定义UIView以实现自绘

    有时候我们须要自绘uiview以实现自己的需求,比方依据坐标点绘制出连续的曲线(股票走势图),就须要自绘uiview了。

    原理:继承uiview类(customView),并实现custom view的drawRect即可。

    首先看一下效果图:


    代码例如以下:

    // .h

    #import <UIKit/UIKit.h>


    @interface CustomView : UIView

    @end


    //.m

    #import "CustomView.h"


    @implementation CustomView


    -(id)initWithFrame:(CGRect)frame{

        //重写initWithFrame时,不要忘了以下一句

        self = [superinitWithFrame:frame];

        

        if (self) {

            self.backgroundColor = [UIColorwhiteColor];

        }

        

        return self;

    }


    //重写drawRect方法(不须要调用)。绘制想要的图像

    -(void)drawRect:(CGRect)rect{

     

        CGContextRef context = UIGraphicsGetCurrentContext();//context:一块内存区域。将它看做当前view的画布即可了。


        NSDictionary *attribute = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize: 15.0f], NSFontAttributeName, [UIColor redColor],  NSForegroundColorAttributeName, nil];

        [@"股市走势图" drawInRect:CGRectMake(100, 200, 80, 20) withAttributes:attribute] ;//绘画标题

        

        //曲线

        CGContextMoveToPoint(context, 10, 400);

        CGContextAddLineToPoint(context, 100, 450);

        CGContextAddLineToPoint(context, 150, 400);

        CGContextAddLineToPoint(context, 200, 450);

        //CGContextStrokePath(context);

        

        //三角形

        CGContextMoveToPoint(context, 20, 100);

        CGContextAddLineToPoint(context, 40, 300);

        CGContextAddLineToPoint(context, 200, 200);

        CGContextClosePath(context);

        CGContextStrokePath(context);

        //CGContextFillPath(context);

        

        //矩形

        CGContextAddRect(context, CGRectMake(20, 20, 100, 50));

        [[UIColor colorWithRed:1 green:0 blue:0 alpha:1] set];

        //CGContextStrokePath(context);//空心

        CGContextFillPath(context);//实心

        

         //

        CGContextAddArc(context, 150, 150, 100, 0, 2*M_PI, 0);

        CGContextStrokePath(context);

    }


    @end


    然后在须要用到该view的view controller的

    viewDidLoad下加入西;以下代码就能够了!

    CustomView *view = [[CustomView alloc]  initWithFrame:[UIScreen mainScreen].bounds];

    [self.view addSubview view];


  • 相关阅读:
    C# Enum转换
    Split
    WCF访问安全
    [转] 检索 COM 类工厂中 CLSID 为 {000209FF00000000C000000000000046} 的组件时失败
    ICSharpCode.SharpZipLib.dll压缩的zip包,7zip解压时出错
    js控制ctrl+p
    跨域访问WCF问题
    sql:过滤字段中是否包含数字
    序列化/反序化
    [转]RegistryKey 操作注册表
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/8372219.html
Copyright © 2011-2022 走看看