view内で円を交互にランダムに繰り返し出現させたいのですが方法がわからず困っております。
下記のコードでfor文を使ってループさせてみたのですが、10回分が同時に出現しただけで思った通りの結果になりませんでした。
何か良い方法はないでしょうか?教えていただけましたら幸いです。
swift
1コード 2 3class ViewController: UIViewController { 4 5 func makeImage(width w: CGFloat,height h: CGFloat) -> UIImage{ 6 let size = CGSize(width: w, height: h) 7 UIGraphicsBeginImageContextWithOptions(size, false, 1.0) //size、opaques、scale 8 let context = UIGraphicsGetCurrentContext() 9 let drawRect = CGRect(x: 0, y: 0, width: w, height: h) 10 let drawPath = UIBezierPath(roundedRect: drawRect, cornerRadius: 100) 11 context?.setFillColor(red: 0, green: 1.0, blue: 1.0, alpha: 1.0) 12 drawPath.fill() 13 context?.setStrokeColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) 14 drawPath.stroke() 15 let image = UIGraphicsGetImageFromCurrentImageContext() 16 UIGraphicsEndImageContext() 17 18 return image! 19 } 20 21 override func viewDidLoad() { 22 super.viewDidLoad() 23 // Do any additional setup after loading the view. 24 25 let c: CGFloat = 100.0 26 let fw = view.frame.width 27 let fh = view.frame.height 28 29 for _ in 0..<10{ 30 rdmImage(viewFrameWidth: fw, viewFrameHeight: fh, circleSize: c) 31 } 32 } 33 34 func rdmImage(viewFrameWidth w: CGFloat,viewFrameHeight h: CGFloat,circleSize c: CGFloat){ 35 var rdmWid = CGFloat(arc4random_uniform(UInt32(w))) 36 var rdmHei = CGFloat(arc4random_uniform(UInt32(h))) 37 38 if rdmWid<c/2{ 39 rdmWid = c/2 40 }else if rdmWid>w-c/2{ 41 rdmWid = w-c/2 42 } 43 if rdmHei<c/2{ 44 rdmHei = c/2 45 }else if rdmHei>h-c/2{ 46 rdmHei = h-c/2 47 } 48 49 let circleImage = makeImage(width: c, height: c) 50 let circleView = UIImageView(image: circleImage) 51 circleView.center = CGPoint(x: rdmWid, y: rdmHei) 52 circleView.alpha = 0.0 53 self.view.addSubview(circleView) 54 55 UIView.animate( 56 withDuration: 2.0, 57 delay: 0, 58 options: [.curveEaseInOut], 59 animations: {circleView.alpha = 1.0}, 60 completion: {(finished: Bool) in 61 self.fadeOutRemove(circleView) 62 }) 63 } 64 65 func fadeOutRemove(_ view: UIView){ 66 UIView.animate(withDuration: 2.0, delay: 0, options: UIView.AnimationOptions(), animations: { 67 view.alpha = 0.0 68 }, completion: {(finished: Bool) in 69 view.removeFromSuperview() 70 }) 71 } 72} 73
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/30 20:32
2020/07/01 00:22
2020/07/01 04:26