【问题标题】:Is UIBezierPath the best way to make a movable rounded rectangle?UIBezierPath 是制作可移动圆角矩形的最佳方法吗?
【发布时间】:2011-11-13 03:54:33
【问题描述】:

我正在从头开始制作 UISlider。我首先制作了一个圆角矩形,我使用以下代码完成了该操作:

CGRect frame = CGRectMake(10, 10, self.frame.size.width, 10);

UIBezierPath* path = [UIBezierPath bezierPathWithRoundedRect:frame cornerRadius:10.0];
[[UIColor blueColor] setFill];
[path fill];

我看到了其他一些制作圆角矩形的选项,但认为这是最快的方法。使用 UIBezierPath 制作一个是否有任何限制?也就是说,滑块需要能够在触摸事件上移动,所以我想更改 BezierPath 的 center 属性。这可能吗?

【问题讨论】:

    标签: objective-c cocoa-touch rounded-corners uibezierpath


    【解决方案1】:

    您需要在每次需要更改滑块位置时重新创建贝塞尔路径,或者使用 CGContext 的变换矩阵将其绘制到不同的位置。

    我建议您考虑使用 CALayer 作为滑块的移动部分。在view.layer 中绘制滑块的通道,并添加一个子层,在其中绘制滑块的“拇指”。然后,您可以在需要移动拇指图层时重新定位它。

    【讨论】:

    • 谢谢。如果我改为使用 CGRect,我是否仍需要每次重绘矩形或变换它?
    • 抱歉,我意识到这是一个模糊的描述。我指的是使用 CGContextMoveToPoint 和 CGContextAddArcToPoint 等方法
    • 对不起,我不知道它叫什么
    • 是的,您每次都必须变换和重绘矩形。
    猜你喜欢
    • 1970-01-01
    • 2020-08-15
    • 2017-08-04
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多