我有UIVIew
的代码:
override func drawRect(rect: CGRect) {
let toolbarSize = CGFloat(UIDevice.currentDevice().userInterfaceIdiom == .Pad ? 0 : 54)
let width = CGRectGetWidth(self.frame)
let height = CGRectGetHeight(self.frame) - toolbarSize
let heightSpan = floor(height / 2 - self.cropSize.height / 2)
let widthSpan = floor(width / 2 - self.cropSize.width / 2)
// fill outer rect
UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).set()
UIRectFill(self.bounds)
// fill inner border
UIColor(red: 1, green: 1, blue: 1, alpha: 0.5).set()
UIRectFrame(CGRectMake(widthSpan - 2, heightSpan - 2, self.cropSize.width + 4,
self.cropSize.height + 4))
// fill inner rect
UIColor.clearColor().set()
UIRectFill(CGRectMake(widthSpan, heightSpan, self.cropSize.width, self.cropSize.height))
}
这会为我的UIView
绘制一个带有白色边框的矩形,我想添加一个圆角半径来绘制圆圈。
是否可以这样做?
答案 0 :(得分:4)
这对我很有用
someImageView.layer.borderWidth = 1
someImageView.layer.borderColor = UIColor.blackColor().CGColor
someImageView.layer.cornerRadius = someImageView.frame.height/2
someImageView.clipsToBounds = true
答案 1 :(得分:0)
带圆角的矩形:使用路径。
除非您想使用layer.cornerRadius
将圆角应用于整个视图(最简单)或子层(最灵活),否则使用UIBezierPath
绘制 roundedRect 。
高度为1/2的cornerRadius
的正方形 roundedRect 最终为圆形或圆盘。
let path = UIBezierPath(roundedRect: innerRect,cornerRadius: 10)
path.fill()
3 roundRect随时可用:
let regular = UIBezierPath(roundedRect: CGRect, cornerRadius: CGFloat)
let irregular = UIBezierPath(roundedRect: CGRect,
byRoundingCorners: UIRectCorner, cornerRadii: CGSize)
let oval = UIBezierPath(ovalInRect: CGRect)
使用path.stroke()
作为边框,path.fill()
作为内容。
drawRect上下文中的示例:
// fill inner rect
UIColor.clearColor().set()
let innerRect = CGRectMake(widthSpan, heightSpan,
self.cropSize.width, self.cropSize.height)
// replace UIRectFill(innerRect) by:
let path = UIBezierPath(roundedRect: innerRect, cornerRadius: 10)
path.fill()
受到excellent讨论的启发:
UIBezierPath* path = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(0, 0, 100, 100)
cornerRadius: 10];
path.lineWidth = 1;
[UIColor.clearColor setStroke];
[path stroke];
答案 2 :(得分:0)
您可以使用awakeFromNib
中的代码。
下面的代码对我来说非常有用
- (void)awakeFromNib {
// Initialization code
self.authorAvatar.layer.cornerRadius = self.authorAvatar.frame.size.width/2;
self.authorAvatar.clipsToBounds = YES;
}
我在自定义单元格中使用它。您也可以在自定义视图中使用相同的代码。