【问题标题】:Draw a lot of objects with NSBezierPath使用 NSBezierPath 绘制大量对象
【发布时间】:2015-10-01 07:02:33
【问题描述】:

你好,我需要画很多复杂的物体,比如图片

我用这个代码画正方形并指向它:

CGFloat mmForSqure = self.frame.size.height/6;
UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(originX, originY, mmForSqure, mmForSqure)];
CGFloat originPoint = mmForSqure/4;
for (int i = 1; i<4; i++) {
    for (int j = 1; j<4; j++) {
        CGPoint pathPoint = CGPointMake(i*originPoint+originX, j*originPoint+originY);
        [path moveToPoint:pathPoint];
        [path addLineToPoint:CGPointMake(i*originPoint+originX+1, j*originPoint+originY+1)];
    }
}
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
shapeLayer.path = path.CGPath;
shapeLayer.fillColor = [UIColor whiteColor].CGColor;
shapeLayer.strokeColor = [UIColor blackColor].CGColor;
shapeLayer.lineWidth = 1.0;
[self.layer addSublayer:shapeLayer];

和其他有两个循环的正方形

CGFloat sizeOfSquared = self.frame.size.height/6;
for (int i = 0; i<=self.frame.size.width/sizeOfSquared; i++) {
    for (int j=0; j!=6; j++) {

    }
}

但这是一个缓慢的 UI 并且占用大量资源,有人知道如何优化资源消耗和 UI 吗??

【问题讨论】:

  • 你为什么不使用 UICollectionView.. 一次单元格中有 9 个按钮

标签: ios draw uibezierpath quartz-core


【解决方案1】:

如果您不需要对单个正方形进行任何操作,您可以尝试先制作线条(所有垂直和 5 个水平),然后使用 self.frame.size.height/6 除以 4 在循环中添加点作为点之间的距离,并在每 3 个点后跳过。只是一个建议。如果有效,请尝试。 :)

【讨论】:

  • collectionview 怎么样。这样做并不容易和灵活。你说什么
  • ya collection view 将是一个更好的解决方案。以为你需要使用贝塞尔路径。收藏视图会让它变得更容易。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多