微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用CGContext在swift中以程序方式绘制矩形/线条

我已经拖网了几天,试图找到关于如何在Swift中以程序方式绘制矩形或线条的最简单的代码示例。我已经看到如何通过覆盖DrawRect命令来做到这一点。我相信你可以创建一个CGContext然后绘制一个图像,但我很乐意看到一些简单的代码示例。还是这是一个可怕的做法?谢谢。
class MenuController: UIViewController 
{

    override func viewDidLoad() 
    {
        super.viewDidLoad()
        // Do any additional setup after loading the view,typically from a nib.
        self.view.backgroundColor = UIColor.blackColor()

        var logoFrame = CGRectMake(0,118,40)
        var imageView = UIImageView(frame: logoFrame)
        imageView.image = UIImage(named:"logo")
        self.view.addSubview(imageView)

        //need to draw a rectangle here
    }
}
这是一个创建一个包含透明背景和一个红色矩形的自定义UIImage的例子,线条通过对角线对齐。
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad();

        let imageSize = CGSize(width: 200,height: 200)
        let imageView = UIImageView(frame: CGRect(origin: CGPoint(x: 100,y: 100),size: imageSize))
        self.view.addSubview(imageView)
        let image = drawCustomImage(imageSize)
        imageView.image = image
    }
}

func drawCustomImage(size: CGSize) -> UIImage {
    // Setup our context
    let bounds = CGRect(origin: CGPoint.zeroPoint,size: size)
    let opaque = false
    let scale: CGFloat = 0
    UIGraphicsBeginImageContextWithOptions(size,opaque,scale)
    let context = UIGraphicsGetCurrentContext()

    // Setup complete,do drawing here
    CGContextSetstrokeColorWithColor(context,UIColor.redColor().CGColor)
    CGContextSetlinewidth(context,2.0)

    CGContextstrokeRect(context,bounds)

    CGContextBeginPath(context)
    CGContextMovetoPoint(context,CGRectGetMinX(bounds),CGRectGetMinY(bounds))
    CGContextAddLinetoPoint(context,CGRectGetMaxX(bounds),CGRectGetMaxY(bounds))
    CGContextMovetoPoint(context,CGRectGetMaxY(bounds))
    CGContextstrokePath(context)

    // Drawing complete,retrieve the finished image and cleanup
    let image = UIGraphicsGetimageFromCurrentimageContext()
    UIGraphicsEndImageContext()
    return image
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐