gpt4 book ai didi

ios - 如何在 Swift 的未知宽度和高度的 View 中将 UIBezierPath 椭圆居中?

转载 作者:行者123 更新时间:2023-11-28 15:47:48 24 4
gpt4 key购买 nike

我在自定义 UIView 中使用绘制函数来创建自定义纹理。问题是宽度和高度由 UIStackView 决定。当我创建 View 时,我使用 CustomView(frame: CGRect(x: 0, y: 0, width: 50, height: 50, color: color) 如果实际宽度和高度在自定义 UIView 的时间使用绘制函数。有没有办法保证 UIBezierPath 在 UIStackView 给定的范围内居中?

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()
}
}

最佳答案

在调用绘制方法时,布局已经发生。只需看看 draw() 中的 self.bounds。需要明确的是,不要查看传递给绘制的矩形来确定您的几何形状。如果您只想重绘需要更新的位,则只能使用该矩形。

关于ios - 如何在 Swift 的未知宽度和高度的 View 中将 UIBezierPath 椭圆居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42755192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com