我有一个页面控件,其中包含一些指定的 anchor ,如下所示。我想对它的背景应用渐变。但我无法获得页面控件的实际框架。谁能帮帮我。
这是工作正常的页面控件框架。
pageControl.setAnchor(top: nil, bottom: buttonsContainerView.topAnchor, left: view.leftAnchor, right: view.rightAnchor);
pageControl.heightAnchor.constraint(equalToConstant: 30).isActive = true;
调用函数将渐变应用到页面控件。
addGradientForPageControl(view: pageControl);
页面控制代码
lazy var pageControl: UIPageControl = {
let pc = UIPageControl();
pc.pageIndicatorTintColor = UIColor.black;
pc.currentPageIndicatorTintColor = UIColor.white;
pc.numberOfPages = self.pages.count;
pc.translatesAutoresizingMaskIntoConstraints = false;
pc.addTarget(self, action: #selector(handlePageClick), for: .touchUpInside);
return pc;
}();
梯度函数。
func addGradientForPageControl(view: UIView){
let gradient: CAGradientLayer = CAGradientLayer();
gradient.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height);
print(Int(view.layer.borderWidth));
let topColor = UIColor(red: 107/255, green: 143/255, blue: 133/255, alpha: 1).cgColor;
let bottomColor = UIColor(red: 68/255, green: 126/255, blue: 114/255, alpha: 1).cgColor;
gradient.colors = [topColor, bottomColor];
view.layer.addSublayer(gradient);
}
如果我调用上面的函数,我总是得到渐变的框架为 (0,0,0,0)。这会导致背景上没有渐变。有什么方法可以通过调用 view.widthAnchor.something 来获取框架的宽度和高度来获取页面控件的框架。
最佳答案
您可能在为 View 分配框架并在屏幕上布局之前添加渐变。尝试在 viewDidLayoutSubviews() 方法中添加渐变。
关于ios - 如何获取 View 的框架并将其设置为渐变的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43437864/