我一整天都在寻求这方面的帮助,但找不到答案。
我有一个子视图,在其中绘制一个矩形,该矩形由子视图构成,因此我需要知道通过自动布局调整的子视图的大小以正确地构建它。我无法找到一种方法来执行此操作ViewDidLoad(),以便在启动时正确渲染矩形。我已经尝试过以下方法:
dayView.setNeedsLayout()后跟,但检查这些语句的两侧显示 dayView.bounds 不变。dayView.layoutIfNeeded()viewDidLoad()viewDidLayoutSubviews(),它可以工作,但会导致我的矩形被绘制 5 次,就像viewDidLayoutSubviews()为每个重绘的子视图(我有 5 个)所调用的那样(包含矩形的相关子视图在 5 次调用中的 4 次调用时重绘) - 这看起来浪费资源,肯定有更好的方法吗?ViewDidLoad(),希望第一次强制绘制会导致视图调整大小,因此第二次绘制将在第一次绘制后访问新的边界(我知道很绝望,但它仍然不起作用)。我希望有人能帮帮忙。
func drawGradient(object: UIView, rect: CGRect, slackX: Int, gradWidth: Int, yPos: Int) -> Void {
// the rectangle width and height set to fit within view with x & y border.
let gradientView = UIView(frame: rect)
let gradient = CAGradientLayer()
gradient.frame = gradientView.frame
gradient.colors = getDayGradientLocations().gradientCol
gradient.locations = getDayGradientLocations().gradientLoc …Run Code Online (Sandbox Code Playgroud)