标签: uibezierpath

如何在iOS SDK中使用Glyph获取UIBezierpath

我们如何UIBezierPathGlyphiOS SDK中使用角色获取.

我已经完成了这个,但它显示双线,我只想要单线..

因为我是这项研究的新手.请帮我解决这个问题..我不想要任何代码,但想得到你的参考..

其实我想UIBezierPath描述每个字母字母的形状..

提前致谢..

iphone glyph objective-c ipad uibezierpath

9
推荐指数
1
解决办法
1830
查看次数

iphone UIbezierpath不规则图像裁剪

我正在为iPhone创建一个拼图益智游戏.

在这里,我必须像下图一样裁剪图像

在此输入图像描述

谷歌搜索后,我开始知道uibezier路径是以不规则形状裁剪图像的最佳路径.

但我没有得到任何代码或想法如何裁剪像上面的图像.

iphone crop objective-c uiimage uibezierpath

9
推荐指数
1
解决办法
5789
查看次数

UIBezierPath圆边?

我画了一些线条,我注意到当边缘达到某个角度时,它会产生一个像这样的尖锐边缘: 尖尖的边缘

我想要它绘制: 圆边

我该怎么做呢?我查看了文档,但我似乎找不到任何我正在寻找的东西.或者有没有办法将自动边缘生成关闭?

drawing ios uibezierpath

9
推荐指数
2
解决办法
5362
查看次数

使用UIBezierPath和CAShapeLayer时出现"无效上下文0x0"

我的困境与这个SO线程中描述的困境非常相似.我阅读了该主题的每个答案,但无法找到解决我问题的任何答案.我已经将我的问题缩小到下面函数内的4行.4行中的每一行都输出了几行错误,我在下面列出了所有错误(我删除了重复项).

我试过移动[path closePath];到这4行以下,但它没有改变任何东西.我还在第一行之前设置了一个断点,并逐行手动完成了这个功能,而这只是造成严重破坏的4行.

对于这个问题似乎是一个趋势,一切都完全按照它应该呈现,但它充斥着控制台与这些类型的消息.

任何帮助将不胜感激,我很乐意提供更多信息和更新.


功能:

-(CAShapeLayer *)lineBetweenPoint:(CGPoint)start andPoint:(CGPoint)end {

    //Draw the first circle
    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:start radius:kLineEndRadius startAngle:0 endAngle:DEGREES_TO_RADIANS(360) clockwise:TRUE];

    //Add the line
    [path moveToPoint:start];
    [path addLineToPoint:end];
    [path moveToPoint:end];

    //Draw the second circle
    [path addArcWithCenter:end radius:kLineEndRadius startAngle:0 endAngle:DEGREES_TO_RADIANS(360) clockwise:TRUE];

    //Close the path and set the coloring
    [path closePath];

    /*The following 4 lines cause problems*/
    [[UIColor blueColor] setStroke]; /*CAUSES PROBLEM*/
    [[UIColor blueColor] setFill]; /*CAUSES PROBLEM*/
    [path stroke]; /*CAUSES PROBLEM*/
    [path fill]; /*CAUSES PROBLEM*/

    //Create …
Run Code Online (Sandbox Code Playgroud)

objective-c cashapelayer ios uibezierpath

9
推荐指数
1
解决办法
6023
查看次数

从UIBezierPath获取积分

在此输入图像描述

我通过以下方式绘制了上面的BezierPath://位置是用户触摸屏幕的位置.//位置将是CGPoint origin = CGPointMake(xStart,620.0)的最大值; CGPoint endpt = CGPointMake(xEnd,620.0); CGPoint midpt1 = midPointForPoints(原点,位置); CGPoint midpt2 = midPointForPoints(location,endpt);

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:origin];
[path addQuadCurveToPoint:location controlPoint:CGPointMake(midpt1.x, midpt1.y+50)];
[path addQuadCurveToPoint:endpt controlPoint:CGPointMake(midpt2.x, midpt2.y+50)];

[shapeLayer setPath:path.CGPath];
Run Code Online (Sandbox Code Playgroud)

现在,我想检索位于路径上的某些x坐标的y坐标.例如,给定x = 0.0,我想得到y = 0.0,或者给定x = 300.0,y = 50.0.

我看了一些像这个问题示例代码的参考文献,我仍然不确定.更新:基本上,我想做这样的事情. 在此输入图像描述

更新:关注 @ Fang的建议:

给出等式

X = (1-t)^2*X0 + 2*t*(1-t)*X1 + t^2 *X2
Run Code Online (Sandbox Code Playgroud)

我解决了

t = ((2.0 * x0 - x1) + sqrt(((-2.0 * x0 + x1) ** 2.0) 
- ((4 * (x0 - …
Run Code Online (Sandbox Code Playgroud)

bezier ios uibezierpath

9
推荐指数
1
解决办法
5245
查看次数

UIBezierPath addClip和drawRect

我知道有一种绘制圆形的方法 - UIBezierPath(roundedRect, cornerRadius)

但是我想知道如果我自己剪辑角落,为什么我必须在绘制矩形之前添加剪辑?(我觉得在绘制之后剪切矩形更合理.我错过了什么概念?)

(1)工作

override func drawRect(rect: CGRect) {
    var clipPath = UIBezierPath(roundedRect: rect, cornerRadius: 8.0)
    path.addClip()

    var rectPath = UIBezierPath(rect: rect)
    UIColor.redColor().setFill()
    rectPath.fill()
}
Run Code Online (Sandbox Code Playgroud)

(2)不工作

override func drawRect(rect: CGRect) {
    var rectPath = UIBezierPath(rect: rect)
    UIColor.redColor().setFill()
    rectPath.fill()

    var clipPath = UIBezierPath(roundedRect: rect, cornerRadius: 8.0)
    path.addClip()
}
Run Code Online (Sandbox Code Playgroud)

ios uibezierpath swift

9
推荐指数
1
解决办法
2820
查看次数

在Swift中将球拖过圆圈路径

我做了一个圆圈路径,圆圈路径的中心位于视图的中间.然后,我做了一个只能在圆圈路径上移动的球(至少这是我想要的): 在此输入图像描述

我做了一个函数,无论我在哪里拖动它都会移动球(仅限于圆形路径),但出于某种原因,每当我拖动它时,它就会变得疯狂并且不会移动,因为我希望它移动.

到目前为止这是我的代码:

class ViewController: UIViewController {
    var midViewX = CGFloat()
    var midViewY = CGFloat()

    var circlePath2 = UIBezierPath()
    var shapeLayer2 = CAShapeLayer()
    override func viewDidLoad() {
        super.viewDidLoad()
        midViewX = view.frame.midX
        midViewY = view.frame.midY
        // Do any additional setup after loading the view, typically from a nib.
        let circlePath = UIBezierPath(arcCenter: CGPoint(x: midViewX,y: midViewY), radius: CGFloat(100), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)
        let shapeLayer = CAShapeLayer()
        shapeLayer.path = circlePath.CGPath
        shapeLayer.fillColor = UIColor.clearColor().CGColor
        shapeLayer.strokeColor = UIColor.redColor().CGColor
        shapeLayer.lineWidth = 3.0
        view.layer.addSublayer(shapeLayer) …
Run Code Online (Sandbox Code Playgroud)

ios uibezierpath swift

9
推荐指数
2
解决办法
1679
查看次数

获取UIBezier路径的中心点

我可以UIBezierPath使用任何选定的字体和大小生成字符.现在我想在bezier路径之间做一条蚀刻线.我可以获得bezier路径的中心点吗?或者我可以制作中心虚线并沿着那条路走的任何其他方式?

这是我如何做的代码

参考链接.我想要这样的东西.:

 UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 568, 568) cornerRadius:0];
UIBezierPath *circlePath = [self createArcPath];
[path appendPath:circlePath];
[path setUsesEvenOddFillRule:YES];





shapeView = [CAShapeLayer layer];
shapeView.geometryFlipped = false;
shapeView.path = path.CGPath;
shapeView.fillRule = kCAFillRuleEvenOdd;
shapeView.fillColor = [UIColor grayColor].CGColor;
shapeView.opacity = 1.0;
shapeView.lineDashPattern = @[@2, @3];
[self.view.layer addSublayer:shapeView];

CGFloat dashes[] = {2, 3};
[path setLineDash:dashes count:2 phase:0];


- (UIBezierPath *)createArcPath
{
// Create path from text
// See: http://www.codeproject.com/KB/iPhone/Glyph.aspx
// License: The Code Project Open License (CPOL) 1.02 …
Run Code Online (Sandbox Code Playgroud)

objective-c ios nsbezierpath uibezierpath

9
推荐指数
1
解决办法
2335
查看次数

在iOS上使用渐变填充路径

在a CAShapeLayer,我画了一个封闭的UIBezierPath.我可以通过设置填充此形状fillColor,但是我想用渐变填充形状.如何设置,CAGradientLayer使其剪切为贝塞尔曲线所描绘的形状?

ios uibezierpath cagradientlayer

8
推荐指数
2
解决办法
1万
查看次数

使用closePath函数关闭贝塞尔曲线路径并手动关闭它有什么区别?

我正在尝试使用矩形UIBezierPath.我采用了两种不同的方法来绘制它.另外,我将笔画宽度增加到25像素.

第一种方法:使用closePath

UIBezierPath *bpath = [UIBezierPath bezierPath];

[bpath moveToPoint:CGPointMake(x, y)];
[bpath addLineToPoint:CGPointMake(x + w, y)];
[bpath addLineToPoint:CGPointMake(x + w, y + h)];
[bpath addLineToPoint:CGPointMake(x, y + h)];
[bpath closePath];
Run Code Online (Sandbox Code Playgroud)

输出:

使用closePath

第二种方法:手动关闭路径

UIBezierPath *bpath = [UIBezierPath bezierPath];

[bpath moveToPoint:CGPointMake(x, y)];
[bpath addLineToPoint:CGPointMake(x + w, y)];
[bpath addLineToPoint:CGPointMake(x + w, y + h)];
[bpath addLineToPoint:CGPointMake(x, y + h)];
[bpath addLineToPoint:CGPointMake(x, y)];
Run Code Online (Sandbox Code Playgroud)

输出:

手动关闭路径

closePath它的文档中说This method closes the current subpath by creating a line segment between the first and …

core-graphics ios uibezierpath

8
推荐指数
1
解决办法
1654
查看次数