SWIFT-cornerRadius在自定义CollectionViewCell中不起作用

问题描述 投票:0回答:3

我试图获取圆形的UICollection单元格,但我发现它无法正常工作,我不知道为什么。我在常规ViewController中有一个TableView,在此tableview中,我有一个自定义表格单元格(在指定部分中),在此自定义表格单元格中,我还有一个CollectionView和自定义collectionCell,如果我在此处进行了四舍五入,则只是不四舍五入任何东西。我将testBtn限制在一定范围内,但不适用于此...我也尝试了testBtn.layer.masksToBounds,但没有成功。但是,如果我要在父对象(tableView单元格本身)中进行四舍五入,则工作得很好...

CollectionViewCell代码:

import UIKit

class ProfileTileCollectionViewCell: UICollectionViewCell {

    @IBOutlet var testBtn: UIButton!
    @IBOutlet var contView: UIView!

    override func awakeFromNib() {
        super.awakeFromNib()
        testBtn.layer.cornerRadius = 20
        testBtn.clipsToBounds = true
        // Initialization code
    }

    @IBAction func testClicked(_ sender: Any) {
        print("clicked")
    }
}

mainView的屏幕截图:Screenshot.png

[蓝色是collectionView的背景,灰色是单元格的背景,紫色是按钮。我不知道是否来晚了,但对我来说很奇怪,无法开始处理此事...我错过了一些...任何帮助,我将不胜感激!

ios swift tableview
3个回答
0
投票

尝试设置testBtn.layer.masksToBounds = true


0
投票

从屏幕截图中,我想您已经在集合视图中添加了拐角半径,并将clipsToBounds设置为true。如果不需要四舍五入的集合视图,请删除cornerRadius并将clipsToBounds设置为false。或者,如果您都需要对它们进行四舍五入,则请在集合视图和按钮之间保持填充。您可以通过微调节的inset属性来完成此操作。


0
投票

我有8个小时的睡眠时间,因为Rob和他的评论,我试图深入调试一下,然后我注意到一条警告消息,提示未设置UICollectionViewFlowLayout的行为...(依此类推。 )。因此,我决定像这样设置UICollectionViewDelegateFlowLayout:

extension ProfileTilesTableViewCell: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsets(top:0, left:10, bottom:0, right: 10)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: (collectionView.frame.width - 40) / 3 , height: collectionView.frame.height - 5)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 10
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 10
}

最后,:D以某种方式开始正常工作!

因此,我删除了用于测试的所有内容,删除了testBtn,并将testBtn.roundedCorners更改为contView.roundedCorners,放回了collectionView属性,它正接近我要查找的内容:Screenshot2.png

感谢您的回答,特别是对Rob的回答。这就是我想要的!

SB最好的问候!

© www.soinside.com 2019 - 2024. All rights reserved.