sizeToFit 和 sizeThatFits

#sizeToFit 和 sizeThatFitside

  • open func sizeToFit() // calls sizeThatFits: with current view bounds and changes bounds size.
  • open func sizeThatFits(_ size: CGSize) -> CGSize // return 'best' size to fit given size. does not actually resize view. Default is return existing view size

如下代碼運行後,都會設置label的實際大小code

var lab1: UILabel!
    var lab2: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let str = "點擊頁面查看UILabel sizeToFit 和 sizeThatFits 的區別"
        lab1 = UILabel(frame: CGRect(x: 10, y: 40, width: 100, height: 50))
        lab2 = UILabel(frame: CGRect(x: 200, y: 40, width: 100, height: 50))
        lab1.numberOfLines = 0
        lab2.numberOfLines = 0
        self.view.addSubview(lab1)
        self.view.addSubview(lab2)
        lab1.text = "sizeToFit "+str
        lab2.text = "sizeThatFits "+str
        lab1.layer.borderWidth=1
        lab2.layer.borderWidth=1
        
        self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tapAction(sender:))))
    }
    
    func tapAction(sender:AnyObject){
        lab1.sizeToFit()
        let size = lab2.sizeThatFits(lab2.frame.size)
        lab2.frame.size = size
    }
相關文章
相關標籤/搜索