标签: uibezierpath

ios检测线角度或度数

我是iOS的新手,我正在尝试开发一个徒手绘图应用程序,使用uibezierPath.is有一种计算或接收总线长度的方法,即使我绘制直线,曲线或圆形.我在touchmove方法上使用addline,我没有任何控制点.

iphone drawing ios uibezierpath

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

如何根据百分比制作圆圈?

我可以创建一个圆圈,但我需要它从“12:00”开始并达到一定的百分比。

 let circlePath = UIBezierPath(arcCenter: CGPoint(x: 100,y: 100), radius: CGFloat(20), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)

    let shapeLayer = CAShapeLayer()
    shapeLayer.path = circlePath.CGPath

    //change the fill color
    shapeLayer.fillColor = UIColor.clearColor().CGColor
    //you can change the stroke color
    shapeLayer.strokeColor = UIColor.redColor().CGColor
    //you can change the line width
    shapeLayer.lineWidth = 3.0

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

ios uibezierpath swift

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

如何在我的 swift 应用程序中为绘图 svg 路径设置动画?

在我的 ios swift 应用程序中,我有一个SVG文件 - 它是地图标记的形状,现在我想用动画来绘制它。由于使用了pocketSVG https://github.com/pocketsvg/PocketSVG/,我设法显示了绘图我的代码如下:

@IBOutlet weak var mainLogoView: UIView!

override func viewDidLoad() {
    super.viewDidLoad()

    let url = Bundle.main.url(forResource: "mainLogo", withExtension: "svg")!

    //initialise a view that parses and renders an SVG file in the bundle:
    let svgImageView = SVGImageView.init(contentsOf: url)

    //scale the resulting image to fit the frame of the view, but
    //maintain its aspect ratio:
    svgImageView.contentMode = .scaleAspectFit

    //layout the view:
    svgImageView.translatesAutoresizingMaskIntoConstraints = false
    mainLogoView.addSubview(svgImageView)

    svgImageView.topAnchor.constraint(equalTo: mainLogoView.topAnchor).isActive = true
    svgImageView.leftAnchor.constraint(equalTo: mainLogoView.leftAnchor).isActive = true …
Run Code Online (Sandbox Code Playgroud)

svg ios uibezierpath swift swift3

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

addArc(withCenter) 闭合路径

以下代码:

  let size = CGSize(width: 200, height: 30)
  let rect = CGRect(origin: .zero, size: size)

  let path1 = UIBezierPath()
  path1.move(to: CGPoint(x: 10, y: 5))
  path1.addLine(to: CGPoint(x: 180, y: 5))
  path1.addArc(withCenter: CGPoint(x: 180, y: 20), radius: 15, 
    startAngle: (3.14159 / 2), endAngle: (3 * 3.14159 / 2), clockwise: false)
Run Code Online (Sandbox Code Playgroud)

产生这个:

在此处输入图片说明

好吧,我错过了什么吗?我不想关闭这条路。我从不打电话path1.close()。我想从弧的末端添加另一条直线,而不是从它的封闭版本。基本上,我不想关闭半圆,我该怎么做?

ios uibezierpath swift3

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

使用UIBezierPath绘制圆角

我有一个设计元素,无法弄清楚;希望有人可以指出正确的方向。我尝试构建的元素就是这样;

没有下边框的圆形按钮

实际上,它是一个圆角矩形,在左侧,顶部和右侧都有笔触(底部应没有笔触)。

我涉猎了以下代码;

// Create the rounded rectangle
let maskPath = UIBezierPath(roundedRect: myView.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize(width: 4.0, height: 4.0))

// Setup a shape layer
let shape = CAShapeLayer()

// Create the shape path
shape.path = maskPath.cgPath

// Apply the mask
myView.layer.mask = shape
Run Code Online (Sandbox Code Playgroud)

随后,我使用以下内容在矩形周围绘制笔触;

// Add border
let borderLayer = CAShapeLayer()
borderLayer.path = maskPath.cgPath
borderLayer.fillColor = UIColor.clear.cgColor
borderLayer.strokeColor = UIColor.white.cgColor
borderLayer.lineWidth = 2.0
borderLayer.frame = self.bounds
self.layer.addSublayer(borderLayer)
Run Code Online (Sandbox Code Playgroud)

这将产生以下图像;

圆角矩形笔画

我无法弄清楚如何使用UIBezierPath()删除底部笔画绘制项目,但是以与舍入的rect相同的方式舍入拐角(我正在使用另一个舍入的rect)。相同的视图用于不同的目的,并且圆角必须相同)。

谢谢!

calayer ios uibezierpath swift

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

Swift:根据父视图大小动态调整/缩放 UIBezierPath

我正在使用UIBezierPathCAShapeLayer绘制一条线并将其作为子层添加到视图中。一切工作正常,现在我必须调整“线”及其父视图的大小,并严格保持线与视图的比例相同。

下面是创建一条线的代码:

let line = UIBezierPath.arrow(from: startPoint, to: endPoint, tailWidth: 5, headWidth: 20, headLength: CGFloat(inputLength * 0.1))
let shapeLayer = CAShapeLayer()
shapeLayer.path = line .cgPath
self.view.layer.addSublayer(shapeLayer)
Run Code Online (Sandbox Code Playgroud)

resize cashapelayer ios uibezierpath swift

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

使用 UIBezierPath 绘制自定义视图会导致形状不对称

我正在尝试绘制带有一些“曲线边缘”的 UIView。

它应该是这样的:

在此处输入图片说明

这是我得到的:

在此处输入图片说明

请注意右上角 (TR) 角如何与右下角 (BR) 不对称?BR 角与我想要实现的非常相似,但我无法使 TR 角正确对齐(以一堆不同的开始和结束角度播放)。

这是代码:

struct Constants {
    static let cornerRadius: CGFloat = 15.0 // used for left-top and left-bottom curvature
    static let rightTipWidth: CGFloat = 40.0 // the max. width for the right tip thingy
    static let rightCornerRadius: CGFloat = 10.0 // the radius for the right tip
    static let rightEdgeRadius: CGFloat = 10.0 // the radius for the top right and bottom right curvature
}
    override func draw(_ rect: CGRect) …
Run Code Online (Sandbox Code Playgroud)

iphone uiview ios uibezierpath swift

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

迅速绘制视图背景的弧线

我想在这样的视图的底部绘制一个弧形:

在此处输入图片说明

背景图案是另一回事,但是我认为可以使用uibezierpath之类的东西来完成?我没有太多经验,任何入门点吗?谢谢

draw uiview ios uibezierpath swift

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

将特定值设置为 UIBezierPath 的圆角

我知道有一些类似的问题,但就我而言,我想为我的图层设置cornerRadius = 8。

在此输入图像描述

如果我设置:

shapeLayer.lineCap = CAShapeLayerLineCap.round
Run Code Online (Sandbox Code Playgroud)

它显示如下:

在此输入图像描述

-> 与设计不匹配。

我的代码:

import Foundation
import UIKit

final class OnboardingCell: UICollectionViewCell {
  @IBOutlet weak var boxView: UIView!
  @IBOutlet weak var continueButton: UIButton!
  @IBOutlet weak var progressView: UIView!

  var onTap: (() -> Void)?
  var levelProgress: CGFloat = 0.1 {
    didSet {
      fgLayer.strokeEnd = levelProgress
    }
  }

  let bgLayer = CAShapeLayer()
  let fgLayer = CAShapeLayer()

  override func awakeFromNib() {
    super.awakeFromNib()
    setup()
    configure()
  }

  override func layoutSubviews() {
    super.layoutSubviews()
    setupShapeLayer(shapeLayer: bgLayer)
    setupShapeLayer(shapeLayer: fgLayer)
  }

  private …
Run Code Online (Sandbox Code Playgroud)

ios uibezierpath swift

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

CABasicAnimation CALayer 路径动画方向

我正在尝试使用CABasicAnimation关键路径但是对图层路径属性进行动画处理。没有得到准确的结果

我正在寻找的路径动画的变化如下

预期动画

在此输入图像描述

注意:-请忽略开关..我的重点只是从动画circularmoon动画的路径变化

我尝试过什么

这是我尝试获取此路径转换动画的代码

@IBDesignable class CustomView: UIView {

 private lazy var shapeLayer = CAShapeLayer()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
        
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        commonInit()
    }
    
    private func commonInit() {
        shapeLayer.frame = bounds
        shapeLayer.fillColor = UIColor.black.cgColor
        shapeLayer.strokeColor = UIColor.red.cgColor
        shapeLayer.lineWidth = 3
        layer.addSublayer(shapeLayer)
        
    }
    
    override func layoutSubviews() {
        
        shapeLayer.path = drawSunShape(bounds)
    }
    private func drawSunShape(_ group:CGRect) -> CGPath {
        let bezierPath = UIBezierPath()
        let radius = …
Run Code Online (Sandbox Code Playgroud)

cabasicanimation cashapelayer ios uibezierpath swift

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