iPad 上的渐变背景 iPhone 尺寸

Gradient background iPhone dimensions on iPad

我在 iPad 上设置渐变背景时遇到问题。在 iPhones 上一切正常,但是当我使用 iPad 时,渐变背景具有 iPhone 尺寸。

我用来制作渐变的代码如下。

func setGradientToTableView(tableView: UITableView) {

        let gradientBackgroundColors = [UIColor(red: 190.0/255.0, green: 219.0/255.0, blue: 0.0/255.0, alpha: 1).cgColor, UIColor(red: 13.0/255.0, green: 227.0/255.0, blue: 97.0/255.0, alpha: 1).cgColor]

        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = gradientBackgroundColors
        gradientLayer.startPoint = CGPoint(x: 0,y: 0)

        gradientLayer.frame = tableView.bounds
        let backgroundView = UIView(frame: tableView.bounds)
        backgroundView.layer.insertSublayer(gradientLayer, at: 0)
        tableView.backgroundView = backgroundView
    }

我想你没有使用自动布局?

在使用 iPad 模拟器启动您的应用程序时检查您的 tableviewsize。我觉得没你想的那么大

您需要为viewDidLayoutSubviews中的图层设置边框:

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        tableView.backgroundView?.layer.sublayers?.forEach { [=10=].frame = tableView.bounds }
    }

此外,正如@Jan Schlorf 在评论中建议的那样,您可以将图层存储为 属性:

    lazy var gradientLayer = CAGradientLayer()

    //...

    func setGradientToTableView(tableView: UITableView) {
        let gradientBackgroundColors = [UIColor(red: 190.0/255.0, green: 219.0/255.0, blue: 0.0/255.0, alpha: 1).cgColor, UIColor(red: 13.0/255.0, green: 227.0/255.0, blue: 97.0/255.0, alpha: 1).cgColor]

        gradientLayer.colors = gradientBackgroundColors
        gradientLayer.startPoint = CGPoint(x: 0,y: 0)

        gradientLayer.frame = tableView.bounds
        let backgroundView = UIView(frame: tableView.bounds)
        backgroundView.layer.insertSublayer(gradientLayer, at: 0)
        tableView.backgroundView = backgroundView
    }

    //...

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        gradientLayer.frame = tableView.bounds
    }