今天在練習(xí)寫(xiě)微博的時(shí)候遇到一個(gè)問(wèn)題:首頁(yè)的導(dǎo)航欄titleView是自定義的UIButton,要讓文字顯示在圖片的前面,這里重寫(xiě)了layoutSubViews()方法,也設(shè)置了sizeToFit();但是結(jié)果如下:

文字和標(biāo)題沒(méi)有親密的在一起
這是跟著網(wǎng)上的視頻一步步做的結(jié)果
想了一下:?jiǎn)栴}肯定是出在了layoutSubViews();
/// 重寫(xiě)布局方法 讓圖片在文字的后面
override func layoutSubviews() {
super.layoutSubviews()
// 判斷是否有圖標(biāo)和標(biāo)題
guard let imageView = imageView, let titleLabel = titleLabel else {
return
}
// 對(duì)應(yīng)移動(dòng)
titleLabel.frame = titleLabel.frame.offsetBy(dx: -imageView.bounds.width, dy: 0)
imageView.frame = imageView.frame.offsetBy(dx: titleLabel.bounds.width, dy: 0)
}
可以看到titleLabel.frame和imageView.frame分別以對(duì)方為參照移動(dòng)。如圖所示移動(dòng)的量明顯大了很多啊。所以試著分別調(diào)用了sizeToFit();
// 設(shè)置圖片和文字的尺寸
titleLabel?.sizeToFit()
imageView?.sizeToFit()
// 設(shè)置button的sizeToFit 否則它不知道要如何顯示
sizeToFit()
結(jié)果完美了!

就是醬紫的