iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 29
0
自我挑戰組

Swift!從新手到微上手系列 第 29

Swift-Frame&Bound

wow,第29天了欸。30天其實說快不快,說慢不慢。默默的也就發了30篇文了

Frame

描述相對於superview內矩形框架視圖的座標位置及大小

Bound

描述自身位置的位置及大小

實作Frame及Bound

let blueView: UIView = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()
        setBlueView()
    }

    func setBlueView() {
        blueView.backgroundColor = #colorLiteral(red: 0.1764705926, green: 0.4980392158, blue: 0.7568627596, alpha: 1)
        blueView.frame = CGRect(x: 0, y: 100, width: 200, height: 200)
        self.view.addSubview(blueView)
        print("blueView frame:\(blueView.frame), blueView Bound:\(blueView.bounds)")
    }

實作出來的圖片如下

設定了一個x軸為0,y軸為100的藍色矩形,印出來的資訊如下

  • blueView Frame:(0.0, 100.0, 200.0, 200.0)
  • blueView Bound:(0.0, 0.0, 200.0, 200.0)

相較於superview,blueView的frame座標位置是(0.0, 100.0),而本身blueView自己的bound座標位置為(0.0, 0.0)

接著調整自己的frame跟bound

func newPlaceBlueView() {
        blueView.frame = CGRect(x: +10, y: +100, width: 200, height: 200)
        print("blueView frame:\(blueView.frame), blueView Bound:\(blueView.bounds)")
        blueView.bounds = CGRect(x: +10, y: +100, width: 200, height: 200)
        print("blueView frame:\(blueView.frame), blueView Bound:\(blueView.bounds)")
    }

印出的結果如下

  • 改變frame之後
    blueView Frame:(10.0, 100.0, 200.0, 200.0)
    blueView Bound:(0.0, 0.0, 200.0, 200.0)

bound沒有改變,主要是y軸計算方式也是從superview開始+100,所以frame的x,y會是(10.0, 100.0)。視圖位置也會改變。

  • 改變bound之後
    blueView Frame:(10.0, 100.0, 200.0, 200.0)
    blueView Bound:(10.0, 100.0, 200.0, 200.0)

第二次改變的是bound,x,y軸變成(10.0, 100.0),但我們裡面並沒有subview,所以視圖位置不會改變。


上一篇
Swift-Notification
下一篇
Swift-Singleton
系列文
Swift!從新手到微上手30

尚未有邦友留言

立即登入留言