小编COS*_*KER的帖子

Swift 自定义饼图 - 从多个 UIBezierPaths 切割透明圆的奇怪行为

使用 Swift 创建自定义饼图/甜甜圈样式图,并且在尝试从甜甜圈上切出洞时遇到了一个奇怪的问题。我已经尝试了第二个 UIBezierPath 的中心和半径的变化,但我无法从中心完成一个干净的切割孔。任何帮助将不胜感激。

UIView 的子类:

import UIKit

public class DoughnutView: UIView {

public var data: [Float]? {
    didSet { setNeedsDisplay() }
}

public var colors: [UIColor]? {
    didSet { setNeedsDisplay() }
}

@IBInspectable public var spacerWidth: CGFloat = 2 {
    didSet { setNeedsDisplay() }
}

@IBInspectable public var thickness: CGFloat = 20 {
    didSet { setNeedsDisplay() }
}

public override func draw(_ rect: CGRect) {
    guard data != nil && colors != nil else {
        return
    }

    guard …
Run Code Online (Sandbox Code Playgroud)

uikit swift

3
推荐指数
1
解决办法
433
查看次数

Swift:用于地理编码的递归异步循环

一次只能发生一个 GeoCode 请求,而且它们是异步的,因此我需要在前一个请求完成后立即开始下一个请求。我让它像这样工作:

func one() {
        let geocoder = CLGeocoder()
        let one = myPlacesFakeData[0]

        geocoder.geocodeAddressString(one.address, completionHandler: { (placemarks, error) in
            if let error = error {
                print("Unable to Reverse Geocode Location (\(error))")
            } else {
                if let placemarks = placemarks, let placemark = placemarks.first {
                    myPlacesFakeData[0].latitude = placemark.location?.coordinate.latitude
                    myPlacesFakeData[0].longitude = placemark.location?.coordinate.longitude
                } else {
                    print("No Matching Address Found")
                }
            }

            self.two()
        })
    }

    func two() {
        let geocoder = CLGeocoder()
        let two = myPlacesFakeData[1]

        geocoder.geocodeAddressString(two.address, completionHandler: { (placemarks, error) in …
Run Code Online (Sandbox Code Playgroud)

recursion geocode swift

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

标签 统计

swift ×2

geocode ×1

recursion ×1

uikit ×1