0
私は、カスタムテクスチャを作成するために、カスタムUIViewでdraw関数を使用しています。問題は、幅と高さがUIStackViewによって決定されることです。私が使用するビューを作成するときCustomView(frame: CGRect(x: 0, y: 0, width: 50, height: 50, color: color)
実際の幅と高さが不明な場合、カスタムUIViewはdraw関数を使用します。 UIBezierPathがUIStackViewによって与えられた境界の中央にあることを保証する方法はありますか?Swiftで未知の幅と高さのビュー内にUIBezierPathの楕円を配置する方法はありますか?
import Foundation
import UIKit
class CustomView: UIView {
let color: UIColor
required init(coder aDecoder: NSCoder) {
color = UIColor()
super.init(coder: aDecoder)!
}
init(frame: CGRect, color: UIColor) {
self.color = color
super.init(frame: frame)
self.backgroundColor = UIColor.init(hexString: CustomColors.pale_blue)
}
override func draw(_ rect: CGRect) {
color.setFill()
color.setStroke()
let width = Int(rect.size.width)
let height = Int(rect.size.height)
let yValue = Int(rect.origin.y)
let xValue = Int(rect.origin.x)
let rectBottom = UIBezierPath(rect: CGRect(x: xValue , y: yValue + height - (height/4), width: width, height: height/4))
let ovalTop = UIBezierPath(ovalIn: CGRect(x: xValue + (width/4), y:yValue + (height/3), width: width/2, height: height/2))
rectBottom.stroke()
rectBottom.fill()
ovalTop.fill()
ovalTop.stroke()
}
}