我有一個非常簡單的UIScrollView與一些內容(許多子視圖)。這個滾動視圖用於顯示用戶創建的一些帖子(圖片+文字)。其中一種觀點實際上是作者的形象,它溢出了底部細胞的界限。因此它與後面的單元格重疊,並使用clipToBounds = false
我可以獲得所需的結果。如果我向下滾動,一切都很好。當我開始向前滾動時,以前覆蓋的視圖會被剪切。dequeueReusableCell休息cliptobounds
Cell overlapping working fine Cell overlapping not working (when I scroll up)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = (indexPath.row % 2 == 0) ? "FeedCellLeft" : "FeedCellRight";
let cell = feedScrollView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! FeedCell;
self.setUpCell(cell, atIndexPath: indexPath);
return cell
}
的setUpCell
功能只是執行一些UI相關的任務
let row = indexPath.row
cell.postImage.downloadImageFrom(link: rows[row].image, contentMode: .scaleToFill)
cell.postAuthorImage.downloadImageFrom(link: "https://pbs.twimg.com/profile_images/691867591154012160/oaq0n2zy.jpg", contentMode: .scaleToFill)
cell.postAuthorImage.layer.cornerRadius = 22.0;
cell.postAuthorImage.layer.borderColor = UIColor.white.cgColor
cell.postAuthorImage.layer.borderWidth = 2.0;
cell.postAuthorImage.layer.masksToBounds = true;
cell.selectionStyle = .none
cell.postData.layer.cornerRadius = 10.0;
cell.contentView.superview?.clipsToBounds = false;
cell.clipsToBounds = false;
if (indexPath.row % 2 != 0) {
cell.postData.transform = CGAffineTransform.init(rotationAngle: (4 * .pi)/180);
} else {
cell.postData.transform = CGAffineTransform.init(rotationAngle: (-4 * .pi)/180);
}
看來,雙端隊列操作打破我做了(使用自動版式)的佈局。我試過很多解決類似這樣的
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
cell.contentView.superview?.clipsToBounds = false;
cell.clipsToBounds = false;
cell.contentView.clipsToBounds = false;
}
但結果看起來總是相同的。每行的高度是固定的。
嗨,這是一個偉大的提示,它似乎工作,但相反方向。現在它在我向上滾動時起作用,但是當我向下滾動時不起作用,因爲在首先佈局單元時,也會調用'willDisplayCell'。 –
@DiegoViganò,檢查我的更新答案。 – dive
G R E A T!有效!我欠你一杯啤酒!再次感謝! –