簡體   English   中英

如何獲取視圖的框架並將其設置為漸變的框架

[英]How to get frame of a view and set it to gradient's frame

我所有的頁面控件都有一些指定的錨點,如下所示。 我想對其背景應用漸變。 但是我無法獲得頁面控件的實際框架。 有誰能夠幫助我。

這是頁面控件的框架,可以正常工作。

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之類的方法來獲取頁面控件的框架,以獲取框架的寬度和高度。

您可能要在為視圖分配框架並在屏幕上布局之前添加漸變。 嘗試在viewDidLayoutSubviews()方法中添加漸變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM