UIBezierPath - byRoundingCorners - Rect

时间:2015-05-05 05:37:11

标签: ios swift

我有一个非常简单的视图控制器..

import UIKit

class ViewController: UIViewController {

    let f = TstKocka(frame: CGRectMake(100,100, 150, 150))

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(f)

    }

}

我有一个UIView类:

class TstKocka: UIView {


    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func drawRect(rect: CGRect) {

        var path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.AllCorners, cornerRadii: CGSize(width: 2.0, height: 2.0))

        path.lineWidth = 1.0
       path.stroke()

    }

}

我正在尝试创建一个圆形的矩形,但我不知道该怎么做。我已经阅读了很多教程,但没有一个能为我工作。请帮助我。

2 个答案:

答案 0 :(得分:1)

因为你没有提供填充颜色,我猜你的矩形应该有一个清晰的颜色。要使该工作将您的initwithframe更改为以下内容:

override init(frame: CGRect) {
    super.init(frame: frame)
    opaque = false
}

然后增加cornerradii值(例如20.0,20.0),看它是否有效! :)

修改

填充实际上就像抚摸一样简单:

let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.AllCorners, cornerRadii: CGSize(width: 20.0, height: 20.0))
path.lineWidth = 1.0

UIColor.blueColor().setFill() // or whatever fill color you like
path.fill()

UIColor.redColor().setStroke()
path.stroke()

答案 1 :(得分:0)

如果您尝试创建剪切内容的圆角矩形视图,则应在视图图层上使用图层蒙版或简单myVector.insert(0,1.0,1); 属性,同时设置-cornerRadius
如果你只想要一个圆角矩形的视图背景,在抚摸之前你应该设置笔触颜色 我不太了解,但在objC中可能是这样的

-borderWidth

在Swift中可能:

- (void) drawRect:(CGRect) rect {
 UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:5.0];
 [[UIColor redColor] setStroke];
 [bezierPath stroke];
}