标签: uibezierpath

路径未填充颜色

我正在尝试画一个酒吧。我已经设置了笔触颜色和填充颜色。虽然我用填充颜色设置路径,但它没有被填充。这段代码绘制了一个矩形。

 blocks = yValue / yInterval; //Total number of blocks
    divider = (self.bounds.size.height * 0.75 - 100)/ blocks ;//height for each block

    float factor = value / yValue;
        //NSLog(@"%f",factor);
        int size = 40;
        [[UIColor redColor] setFill];
        [[UIColor redColor] setStroke];
        UIBezierPath *path = [[UIBezierPath alloc]init];

        CGPoint x1 = CGPointMake(0 + 100 + (index * size), self.bounds.size.height * 0.75);
        CGPoint x2 = CGPointMake(x1.x + size,self.bounds.size.height * 0.75 );
       // float height = (self.bounds.size.height * 0.75) - ((self.bounds.size.height * 0.75) * factor) + …
Run Code Online (Sandbox Code Playgroud)

ios uibezierpath

0
推荐指数
1
解决办法
804
查看次数

如何获取 UIBezierPath 圆弧的半径中心点?

我有 Objective C 应用程序。在 ViewController 中,我有一个 UIView,在这个视图中,我用 UIBezierPath 画了一个圆圈,代码如下:

CAShapeLayer* clockWiseLayer = [[CAShapeLayer alloc] init];
        clockWiseLayer.path = [UIBezierPath bezierPathWithArcCenter:centerPoint
                                                              radius:radius
                                                          startAngle:startAngle
                                                            endAngle:endAngle
                                                           clockwise:YES].CGPath;
Run Code Online (Sandbox Code Playgroud)

然后我想知道部分的点中心或部分圆弧中心的半径中心是什么,如下所示:

在此输入图像描述

我怎样才能得到这一点?如果我知道角度的终点、起点、半径大小,该点的值是多少?如何计算?

objective-c cashapelayer cgpoint ios uibezierpath

0
推荐指数
1
解决办法
2004
查看次数

如何将动画化的 UIBezierPath 或 cgPath 翻转到 CAShapeLayer 上?

我有一个 [UIBezierPath] 类型的数组,我将其转换为 cgPaths,然后将其动画到我称为 shapeLayer 的 CAShapeLayer 上。现在由于某种原因我所有的路径都是颠倒的,所以所有的路径都被颠倒了。我该如何解决这个问题,我尝试了几种方法,但遗憾的是它们都不起作用......但是我确实弄清楚了如何扩展路径。这是我绘制 swiftPath 的代码,它是由函数 swiftBirdForm() 下的 Forms 类中找到的 UIBezierPaths 组成的路径。绘制路径工作正常,我只是不知道如何将其翻转 180 度。

    @objc func drawForm() {
    var swiftPath = Forms.swiftBirdForm()
    let shapeLayer = CAShapeLayer()
    shapeLayer.fillColor = UIColor.clear.cgColor
    shapeLayer.strokeColor = UIColor.black.cgColor
    shapeLayer.lineWidth = 1
    shapeLayer.frame = CGRect(x: -120, y: 120, width: 350, height: 350)

    var paths: [UIBezierPath] = swiftPath

    guard let path = paths.first else {
        return
    }

    paths.dropFirst()
        .forEach {
            path.append($0)
    }

    shapeLayer.transform = CATransform3DMakeScale(0.6, 0.6, 0)
    shapeLayer.path = path.cgPath

    self.view.layer.addSublayer(shapeLayer)

    let strokeEndAnimation = …
Run Code Online (Sandbox Code Playgroud)

cabasicanimation cashapelayer cgpath uibezierpath swift

0
推荐指数
1
解决办法
1440
查看次数

平滑的 UIBezierPath

我在操场上创建了一个 uibezierpath 手动添加的值,它工作正常。结果是: 在此处输入图片说明

现在我的目标是平滑曲线并去除这些“尖”角。我正在考虑插值函数但不确定。在我的实际代码下面:

//: Playground - noun: a place where people can play

import Foundation
import UIKit
import CoreGraphics
import QuartzCore

class DemoView: UIView {


    override func draw(_ rect: CGRect) {
        let origin = CGPoint(x: frame.size.width / 2, y: frame.size.height / 2)
        let radius = frame.size.width / 2

//        self.createCircle(origin: origin, radius: radius)
        self.addLinesInCircle(origin: origin, radius: radius)
    }

    func createCircle(origin: CGPoint, radius: CGFloat) {
        let path = UIBezierPath()
        path.addArc(withCenter: origin, radius: radius, startAngle: 0, endAngle: CGFloat(2 * Double.pi), clockwise: …
Run Code Online (Sandbox Code Playgroud)

interpolation core-graphics uibezierpath swift swift-playground

0
推荐指数
1
解决办法
1150
查看次数

带有阴影快速的线圆

我用阴影创建了线圆,但是当我尝试更改时shadowRadius,阴影没有显示

let path = UIBezierPath(ovalIn: rect)
let shapeLayer              = CAShapeLayer()
shapeLayer.path             = path.cgPath
shapeLayer.fillColor        = UIColor.clear.cgColor
shapeLayer.strokeColor      = UIColor.white.cgColor
shapeLayer.lineWidth        = 1
shapeLayer.shadowOpacity    = 0.9
shapeLayer.shadowColor      = UIColor.white.cgColor
shapeLayer.shadowOffset     = .zero
shapeLayer.shadowRadius     = 10.0
//shapeLayer.shadowPath       = path.cgPath

layer.addSublayer(shapeLayer)
Run Code Online (Sandbox Code Playgroud)

具有默认圆角半径的线圆

圆角半径为 10.0 的线圆

有人能帮我吗?

core-graphics shadow ios uibezierpath swift

0
推荐指数
1
解决办法
786
查看次数

绘制自定义形状Swift

我正在尝试绘制类似于门票的形状-类似于下图。我只是对轮廓感兴趣,而对内部细节都不感兴趣。我知道可以通过创建一个自定义UIView并覆盖该drawRect方法来完成。我知道如何绘制简单的形状(如矩形),如下面的代码所示,但是在这种情况下,我不确定如何绘制曲线。 在此处输入图片说明

override func drawRect(rect: CGRect) {
    let size = self.bounds.size
    let p1 = self.bounds.origin
    let p2 = CGPoint(x:p1.x + size.width, y:p1.y)
    let p3 = CGPoint(x:p2.x, y:p2.y + size.height)
    let p4 = CGPoint(x:p1.x, y:p1.y + size.height)
    let path = UIBezierPath()
    path.moveToPoint(p1)
    path.addLineToPoint(p2)
    path.addLineToPoint(p3)
    path.addLineToPoint(p4)
    path.closePath()
    UIColor.blackColor().set()
    path.fill()
}
Run Code Online (Sandbox Code Playgroud)

drawrect ios uibezierpath swift

0
推荐指数
1
解决办法
1001
查看次数

我怎样才能圆角UIBezierPath?

我有一个用于相机的图层,您可以在图 1 中看到,我需要像图 2 那样的圆角。我如何将其圆化。

图片1:在此输入图像描述图片2:在此输入图像描述

    if cornerRadius > cornerLength { cornerRadius = cornerLength }
    if cornerLength > maskContainer.width / 2 { cornerLength = maskContainer.width / 2 }

    let upperLeftPoint = CGPoint(x: maskContainer.minX, y: maskContainer.minY)

    let upperLeftCorner = UIBezierPath()
    upperLeftCorner.move(to: upperLeftPoint.offsetBy(dx: 0, dy: cornerLength))
    upperLeftCorner.addArc(withCenter: upperLeftPoint.offsetBy(dx: cornerRadius, dy: cornerRadius),
                           radius: cornerRadius, startAngle: .pi, endAngle: 3 * .pi / 2, clockwise: true)
    upperLeftCorner.addLine(to: upperLeftPoint.offsetBy(dx: cornerLength, dy: 0))

    let combinedPath = CGMutablePath()
    combinedPath.addPath(upperLeftCorner.cgPath)
Run Code Online (Sandbox Code Playgroud)

ios uibezierpath swift

0
推荐指数
1
解决办法
727
查看次数

如何沿路径/ BezierCurve创建多个UIButton?

如何沿路径/ BezierCurve创建对象?换句话说,如何沿给定路径创建多个UIButton,沿同一路径给定间隔?

我看过很多关于移动物体的问题.但我需要一个实际创建它们的解决方案.

我想沿着路径前进并为每个X点/距离创建一个对象.像这样:

....@....@....@....@....
Run Code Online (Sandbox Code Playgroud)

在这种情况下,每4个点,获取位置,并在那里创建一个UIButton.

objective-c ios uibezierpath

-1
推荐指数
1
解决办法
648
查看次数

圆形视图的右上角和左上角?

我正在试图弄清楚如何掩盖UIView以显示一个形状,该形状代表一个坐在其上的半圆形的正方形.

基本上,就像将边界半径仅应用于顶部两个角以将它们圆化并创建弧形.

我正在使用swift,这让我发疯了.

编辑:CornerRadius没有做我想要的.我觉得我必须使用CGShapeLayer,但我不确定如何创建弧.

EDIT2: 在此输入图像描述

EDIT3:

考虑解释我想要什么,提供图片,并解释我不理解我需要做什么,或者我需要做什么对某些人来说是不够的,这是我尝试过的:

尝试设置layer.cornerRadius属性,同时将视图的底部推出屏幕以隐藏底角不会出现切断,这种类型的遮蔽太圆形并且没有提供正确的圆弧效果.

我尝试使用UIBezierPath设置前两个角来使用视图的cornerRadii width / 2.这也没有产生适当的结果.在尝试将值硬编码到cornerRadii中时,我注意到无论值如何,我似乎无法获得我想要的结果.

还有哪些其他选择?或者我只是错误地使用BezierPath?

编辑4:

这是我的原始代码.

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    let bezierPath = UIBezierPath(roundedRect: navBarView.bounds, byRoundingCorners: [.TopLeft, .TopRight], cornerRadii: CGSizeMake(navBarView.bounds.width / 2, navBarView.bounds.width / 2)).CGPath;

    let shapeLayer = CAShapeLayer();
    shapeLayer.bounds = navBarView.bounds
    shapeLayer.path = bezierPath
    navBarView.layer.mask = shapeLayer

    updateUI() // <-- Label text, etc. 
}
Run Code Online (Sandbox Code Playgroud)

此外,如前所述,曾尝试过 navBarView.layer.cornerRadius = x

cashapelayer ios uibezierpath swift

-1
推荐指数
1
解决办法
4324
查看次数

如何绘制方向箭头

我在许多方向和角度上都有线,我使用绘制了线UIBezierpath

我需要在这条线的一端画一个箭头。动态地根据给定的点。

编辑: 手绘,但应该给您更好的理解

编辑2:与杰克答案这是我的代码

let y2 = line.point2Y

let path = UIBezierPath()

  path.move(to: CGPoint(x: x1, y: y1))
  path.addLine(to: CGPoint(x: x2, y: y2))
path.addArrow(start: CGPoint(x: x1, y: y1), end: CGPoint(x: x2, y: y2), pointerLineLength: ...
path.close()

let shape = CAShapeLayer()
let shapeBorder = CAShapeLayer()
shapeBorder.strokeColor = UIColor.black.cgColor
shapeBorder.lineJoin = kCALineJoinRound
shapeBorder.lineCap = kCALineCapRound
shapeBorder.lineWidth = 10
shapeBorder.addSublayer(shape)

shape.path = path.cgPath
shapeBorder.path = shape.path
shape.lineJoin = kCALineJoinRound
shape.lineCap = kCALineCapRound
shape.lineWidth = shapeBorder.lineWidth-5.0
shape.strokeColor = color
Run Code Online (Sandbox Code Playgroud)

但是有阴影 在此处输入图片说明

ios uibezierpath swift3

-1
推荐指数
1
解决办法
2644
查看次数

如何围绕环的中心点绘制圆形按钮?

我正在尝试在这样的环中绘制圆形按钮。

在此输入图像描述

我有 6 个 UI 按钮,它们的圆角半径都是 360 度,我试图在 Swift 中做的是将它们均匀地绘制在中心按钮/点周围,就像上图一样。每个圆与其相邻圆的间距相等。实现此功能的最佳方法是什么?我应该创建一条贝塞尔曲线,然后使用数学来绘制该曲线周围的按钮,还是您会建议其他方法?

附带说明的是,我并不是在寻找任何类型的径向菜单,不需要动画。我只是想按照上面的格式绘制现有的 UI 按钮。

谢谢!

uibutton ios uibezierpath swift

-1
推荐指数
1
解决办法
1385
查看次数

如何在我的iOS应用程序中使用"DEGREE"

嗨,我需要制作2D拱门.我在哪里遇到问题

arc.path=[UIBezierPath bezierPathWithArcCenter:CGPointMake(50, 100)
                                                  radius:80.0
                                                  startAngle:DEGREE(65)
                                                  endAngle:DEGREE(90)
                                                  clockwise:NO].CGPath;
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

Undefined symbols for architecture i386: "_DEGREE", referenced from:

我知道我没有包含一些头文件,我可以知道哪一个要包含?

objective-c cashapelayer uibezierpath

-2
推荐指数
2
解决办法
3492
查看次数