在tableviewCell类中找不到属性“bounds”

时间:2017-03-20 13:21:21

标签: ios swift swift3

我需要在textField中设置顶部和底部边框。我很遗憾我缺乏知识。所以任何人都可以帮助我如何做可行bounds属性这个代码我在tableviewCell类中设置来创建一个TextField。

class NewAdressForGustCell : UITableViewCell{

       var areaTextField : RightPaddingTextField = {

            var textField = RightPaddingTextField()

            let topBorder = CALayer()
            topBorder.frame = CGRect(0, 0, bounds.size.width, 1)
            topBorder.backgroundColor = UIColor.gray.cgColor
            textField.layer.addSublayer(topBorder)

            let bottomBorder = CALayer()
            bottomBorder.frame = CGRect(0, bounds.size.height-1, bounds.size.width, 1)
            bottomBorder.backgroundColor = UIColor.gray.cgColor
            textField.layer.addSublayer(bottomBorder)

            textField.translatesAutoresizingMaskIntoConstraints = false
            return textField

        }()
}

1 个答案:

答案 0 :(得分:2)

问题是bounds隐含地表示self.bounds,并且您无法在初始化self(甚至隐式) >你在这里做self的财产。这是有道理的,因为此时self正是尚不存在的:我们仍在初始化它。

一个简单的解决方法是将此var areaTextField标记为lazy。这是有效的,因为它保证代码在 self完全初始化之后之前不会运行。 (请注意,您必须明确 指向self。)

class NewAdressForGustCell : UITableViewCell{

    lazy var areaTextField : RightPaddingTextField = {

        var textField = RightPaddingTextField()

        let topBorder = CALayer()
        topBorder.frame = CGRect(x:0, y:0, width:self.bounds.size.width, height:1)
        topBorder.backgroundColor = UIColor.gray.cgColor
        textField.layer.addSublayer(topBorder)

        let bottomBorder = CALayer()
        bottomBorder.frame = CGRect(x:0, y:self.bounds.size.height-1, width:self.bounds.size.width, height:1)
        bottomBorder.backgroundColor = UIColor.gray.cgColor
        textField.layer.addSublayer(bottomBorder)

        textField.translatesAutoresizingMaskIntoConstraints = false
        return textField

    }()
}