##実現したいこと
UIBezierPAthをタイマーの時間と連携して描画しようとしています。
お手数ですがご協力お願いします。
##直面している課題
①ビルド時にシュミレーターにパスが表示されないこと
②タイマーとの連携が上手くいかないこと
##試したこと
①別プロジェクトに該当コードをコピペ -> パスは表示されず
②func arcPercentの引数:secondsをfunc stepの定数:timeと連携させた -> 上手くいかず (連携の方法があっているか良し悪しの判断が出来ない)
##該当のソースコード
class SropWatchViewController: UIViewController { var startTime: TimeInterval = 0 var intervalTime: Double = 0.0 @IBOutlet weak var timerLabel: UILabel! @IBOutlet weak var stopButton: UIButton! @objc func step(){ intervalTime = Date().timeIntervalSince1970 - startTime let time = Int(intervalTime) let h = time / 3600 % 24 let m = time / 60 % 60 let s = time % 60 let displayStr = String(format: "%02d:%02d:%02d",h,m,s) timerLabel.text = displayStr } func arcPercent(_ radius:CGFloat, _ seconds:Double) -> UIBezierPath { let endAngle = 2*Double.pi*seconds/1200 - Double.pi/2 let path = UIBezierPath( arcCenter: CGPoint(x: 0, y: 0), radius: radius, startAngle: CGFloat(-Double.pi/2), endAngle: CGFloat(endAngle), clockwise: true ) return path } func drawLine() -> UIImage { let size = view.bounds.size UIGraphicsBeginImageContextWithOptions(size, false, 1.0) intervalTime = Date().timeIntervalSince1970 - startTime let time = Int(intervalTime) let seconds = time%60 UIColor.red.setStroke() let arcPath = arcPercent(80, Double(seconds)) arcPath.lineWidth = 60 arcPath.lineCapStyle = .butt let tf = CGAffineTransform(translationX: view.center.x, y: view.center.y) arcPath.apply(tf) arcPath.stroke() let image = UIGraphicsGetImageFromCurrentImageContext() return image! } override func viewDidLoad() { super.viewDidLoad() startTime = Date().timeIntervalSince1970 Timer.scheduledTimer( timeInterval: 1.0, target: self, selector: #selector(self.step), userInfo: nil, repeats: true ) timerLabel.text = String("00:00:00") let drawImage = drawLine() let drawView = UIImageView(image: drawImage) view.addSubview(drawView) } }
##xcodeのバージョン
xcode 9.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/21 08:11
2019/02/21 08:17