我有一个显示圆形,椭圆形,ractangles形状的UICollectionView。因此,当我点击Cell时,我需要在UIView上绘制相同的形状,然后我需要移动并调整通过单击Cell绘制的视图。如何在iOS中实现?提前致谢。
答案 0 :(得分:2)
如果您使用UICollectionView,您的可重用单元格将具有"层"借鉴。
怎么办?
1。创建一个UIView
子类并将其放在可重用的单元格中。
2。覆盖drawRect(_:)
方法,您将完成所有绘图。
3. 将您的shape/line drawing code
添加到drawRect方法。
例如,对行,弧等使用UIBezierPath
类。您将能够创建各种形状。
您应该阅读CoreGraphics API参考:
https://developer.apple.com/reference/coregraphics
还了解Layers
,Contexts
和drawRect:
circle
的一个非常基本的例子:
class CircleView: UIView {
override func draw(_ rect: CGRect) {
guard let context = UIGraphicsGetCurrentContext() else {
return
}
context.addEllipse(in: rect)
context.setFillColor(.red.cgColor)
context.fillPath()
}
}
并使用UIBezier路径绘制线条(rects,stars等):
override func drawRect(rect: CGRect) {
var path = UIBezierPath()
path.moveToPoint(CGPoint(x:<point x>, y:<point y>))
path.addLineToPoint(CGPoint(x:<next point x>, y:<next point y>))
point.closePath()
UIColor.redColor().set()
point.stroke()
point.fill()
}
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以使用CAShapeLayer。例如。画一个圆圈。
shapeLayer = [CAShapeLayer layer];
shapeLayer.frame = aFrame;
UIBezierPath *spath = [UIBezierPath bezierPathWithArcCenter:centerPoint radius:12 startAngle:0 endAngle:(2 * M_PI) clockwise:YES];
shapeLayer.strokeColor = [UIColor colorWithRed:71/255.0 green:157/255.0 blue:252/255.0 alpha:1].CGColor;
shapeLayer.path = spath.CGPath;
shapeLayer.strokeStart = 0;
shapeLayer.strokeEnd = 0;
shapeLayer.fillColor = nil;
shapeLayer.lineWidth = 2;
[self.layer addSublayer:shapeLayer];
我希望它可以帮到你
答案 3 :(得分:0)
您可以使用图层的属性: