ボタンを含むiOS 10アプリ(「Press Me!」)と、塗りつぶされていない青い輪郭の四角形を含むUIViewがあります。可能な方法(私はUIView.animation(withDuration:, animations:)
を使って試してみました)を使って、赤で矩形を徐々に(5秒のように)塗りつぶしたいと思います。swiftとUIViewAnimationを使用して徐々に図形を塗りつぶしますか?
ここでのViewControllerです:
class ViewController: UIViewController {
@IBOutlet weak var tronkyy: tronc!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func didPress(_ sender: UIButton) {
tronkyy.full = true
tronkyy.setNeedsDisplay()
} }
とビュー:私は以下のコードが含まれます
@IBDesignable class tronc: UIView {
//var value = 0.0
var full = false
override func draw(_ rect: CGRect) {
UIColor.blue.setStroke()
boxPath().stroke()
drawDynamic()
}
private func boxPath() -> UIBezierPath {
let path = UIBezierPath(rect: CGRect(x: 0.1 * frame.width, y: 0.1 * frame.height, width: 0.8 * frame.width, height: 0.8 * frame.height))
UIColor.blue.setStroke()
return path
}
func drawDynamic() {
if full {
UIView.animate(withDuration: 10) { _ in
//while self.value < 1 {
let path = UIBezierPath(rect: CGRect(x: 0.1 * self.frame.width, y: 0.1 * self.frame.height, width: (0.8 * self.frame.width), height: 0.8 * self.frame.height)) //* CGFloat(value)))
UIColor.red.setFill()
path.fill()
//self.value += 0.1
//}
}
full = false
}
} }
ああ、はい、赤いビューは長方形をカバーすることを無視してください。 問題は、段階的な充填がないことです。それはただ一回、そしてすべてを満たすだけです。
編集:回答に示唆されているように、「値」プロパティとwhileループをコメントアウトしましたが、それでも機能しません。
サブビューでUIViewを使用できますか?それとももっと複雑な形を計画していますか? – DonMag
私は実際に複雑なものを使うことを計画しています。しかし、私はあなたのやり方を見てうれしいでしょう –