我正在尝试创建一个带有另一种颜色的1pt边框的彩色10pt圆圈。对于这个例子,让我们说我想要一个带有白色1pt边框的10pt的红色圆圈。
我假设我必须制作UIView
12pt直径(10pt用于圆形,每边1pt边框)。角半径是视图宽度的一半。
此圈子被添加到另一个UIView,它是NavigationBar中barButtonItem中的customView,如果它与此有任何关系..
我的代码如下:
let circle = UIView(frame: CGRect.zero)
circle.translatesAutoresizingMaskIntoConstraints = false
let w = NSLayoutConstraint(item: circle, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .width, multiplier: 1, constant: 12)
let h = NSLayoutConstraint(item: circle, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .height, multiplier: 1, constant: 12)
circle.addConstraints([w, h])
let x = NSLayoutConstraint(item: circle, attribute: .centerX, relatedBy: .equal, toItem: someView, attribute: .centerX, multiplier: 1, constant: 0)
let y = NSLayoutConstraint(item: circle, attribute: .centerY, relatedBy: .equal, toItem: someView, attribute: .centerY, multiplier: 1, constant: 0)
someView.addSubview(circle)
someView.addConstraints([x, y])
circle.backgroundColor = UIColor.red
circle.layer.cornerRadius = 6
circle.layer.borderColor = UIColor.white.cgColor
circle.layer.borderWidth = 1
circle.clipsToBounds = true
这就是结果:
正如你所看到的那样,圆圈宽10pt,然后是1pt的边界,但它在整个边界都有小的红色伪影。某种光栅化?我该如何解决这个问题?
放大:
我可以制作一个12pt视图,另一个视图10pt居中,使用不同的颜色,但我宁愿实例化1个视图而不是2个。