【问题标题】:UIBezierPath - byRoundingCorners - RectUIBezierPath - byRoundingCorners - 矩形
【发布时间】:2015-05-05 05:37:11
【问题描述】:

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

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()

    }

}

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

【问题讨论】:

  • 尝试提供一个示例,说明您如何尝试创建圆角矩形。还要提供您注意到的任何错误或其他副作用。这些简单的步骤将大大改善问题。

标签: ios swift


【解决方案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()

【讨论】:

  • 没有这条线: opaque = false 我的矩形是全黑的,我看不到角落有任何圆角。现在我在你写的时候添加了这一行,它正在工作,我可以看到圆角!谢谢你。但是,我怎样才能用任何颜色填充我的矩形,然后圆角? :)
【解决方案2】:

如果您尝试创建一个圆角矩形视图来剪辑内容,您应该使用图层蒙版或视图图层上的简单-cornerRadius 属性,同时设置-borderWidth
如果您只想查看背景圆角矩形,则在抚摸之前,您应该设置笔触颜色。
我不知道 swift 但在 objC 中可能是这样的

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

在 Swift 中可能:

  override func drawRect(rect: CGRect) {
        let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.AllCorners, cornerRadii: CGSize(width: 2.0, height: 2.0))
    UIColor.redColor().setStroke() 
        path.lineWidth = 1.0
       path.stroke()

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多