1,tableview點(diǎn)擊選中效果,放開點(diǎn)擊后選中效果消失。只需重寫tableview的delegate方法
@available(iOS 6.0, *)
public func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool{
return true
}
@available(iOS 2.0, *)
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
tableView.cellForRow(at: indexPath)?.isSelected = false
}
2,使用collectionview時出現(xiàn)錯誤,使用的是storyboard進(jìn)行布局,由于多個collectionview使用同一個cell類,第一個collectionview沒問題,后面幾個都出現(xiàn)如下錯誤
“terminating with uncaught exception of type NSException”
分析原因時以為是不能復(fù)用或者說復(fù)用出現(xiàn)了問題,后面發(fā)現(xiàn)時storyboard中關(guān)聯(lián)變量出問題了。
有時候?qū)τ诓季殖霈F(xiàn)了崩潰,一定先排查下是否在storyboard中這些引用失效了,如果在storyboard中還有關(guān)聯(lián),但是實(shí)際代碼中去掉了,就會關(guān)聯(lián)失敗導(dǎo)致崩潰。
3,SDWebImage再collectionview的cell中加載圖片出現(xiàn)錯亂
錯亂的原因肯定是reuse造成的,我這邊出現(xiàn)這個原因的場景是item可增加和刪除,在圖片加載的過程總,刪除這個item,就會出現(xiàn)刪除的item原來要顯示的圖片顯示在別的item上了。解決方案是在item的prepareForReuse中加入以下代碼,記得兩句都要加,只加第一句有時候解決不了問題
override func prepareForReuse() {
defaultimg.sd_cancelCurrentImageLoad()
defaultimg.image = UIImage(named:"edit_avatar_default")
}
這個地方需要注意的一個坑是如果使用的是kingfish框架加載圖片,用同樣的處理方式,仍然會有圖片錯亂。
kingfish框架對這類問題的處理如下:
override func prepareForReuse() {
background.kf.cancelDownloadTask()
background.kf.setImage(with: nil)//這句不能少,少了之后也會出現(xiàn)錯亂
background.image = nil
}
4,計(jì)算UILabel的寬度
如果有多個view,放置一行,然后整體居中,對于多語言支持的UILabelview,由于是設(shè)置文字之后才知道寬度,所以需要在設(shè)置文字后,再通過調(diào)整constraints來讓view居中
但是在使用nameLabel.frame.width來計(jì)算寬度時,發(fā)現(xiàn)設(shè)置不同的text返回的長度還是一樣的。實(shí)際上應(yīng)該是用
nameLabel.intrinsicContentSize.width
這句代碼應(yīng)該是在設(shè)置完了text之后調(diào)用。