我正在绘制时间轴视图。当我更新新数据时,在前一层底部绘制的圆形图层时,我正在使用UITableView
。
这是加载新数据时的样子
这是我的自定义单元代码:
override func draw(_ rect: CGRect) {
if let anchor = anchorView() {
anchor.layer.zPosition = 3
let iconImageView = anchor as! UIImageView
iconImageView.image = iconImageView.image!.withRenderingMode(UIImageRenderingMode.alwaysTemplate)
iconImageView.tintColor = UIColor.white
let centreRelativeToTableView = anchor.superview!.convert(anchor.center, to: self)
// print("Anchor x origin : \(anchor.frame.size.origin.x)")
timelinePoint.position = CGPoint(x: centreRelativeToTableView.x , y: centreRelativeToTableView.y/2)
timeline.start = CGPoint(x: centreRelativeToTableView.x , y: 0)
timeline.middle = CGPoint(x: timeline.start.x, y: anchor.frame.origin.y)
timeline.end = CGPoint(x: timeline.start.x, y: self.bounds.size.height)
timeline.draw(view: self.contentView)
let circlePath = UIBezierPath(arcCenter: CGPoint(x: anchor.center.x,y: anchor.center.y ), radius: CGFloat(20), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)
let shapeLayer = CAShapeLayer()
shapeLayer.path = circlePath.cgPath
//change the fill color
shapeLayer.fillColor = UIColor.randomFlat.cgColor
// shapeLayer.fillColor = UIColor.clear.cgColor
//you can change the stroke color
shapeLayer.strokeColor = UIColor.white.cgColor
//you can change the line width
shapeLayer.lineWidth = 0
anchor.alpha = 1
//Set Anchor Z position
anchor.layer.zPosition = 2
shapeLayer.zPosition = 1
anchor.superview?.layer.insertSublayer(shapeLayer, at: 0 )
// anchor.tintColor = UIColor.white
// Setting icon to layer
/* let imageLayer = CALayer()
imageLayer.contents = iconImageView.image
imageLayer.frame = anchor.frame
anchor.layer.addSublayer(imageLayer)*/
// timelinePoint.draw(view: self.contentView)
} else {
print("this should not happen")
}
}
我怎么能解决这个问题
答案 0 :(得分:0)
itemImageView.layer.cornerRadius = 25;
更新:正如用户atulkhatri所指出的那样,如果您不添加,它就无法工作:
itemImageView.layer.masksToBounds = YES;
答案 1 :(得分:0)
在此附加信息中调用您的图片视图
extension UIImageView {
public func maskCircle(anyImage: UIImage){
self.contentMode = UIViewContentMode.ScaleAspectFill
self.layer.cornerRadius = self.frame.height / 2
self.layer.masksToBounds = false
self.clipsToBounds = true
//make square(* must to make circle), resize(reduce the kilobyte) & fix rotation.
self.image = prepareImage(anyImage)
}
}