UICollectionViewCell中UIButton的角半径不起作用

时间:2015-10-04 09:05:19

标签: iphone swift autolayout uicollectionview

我在一个ANY-ANY故事板类型的ViewController中有一个UICollectionView,并使用swift自动布局。我已将ViewController的大小更改为iPhone 5屏幕大小。

问题是,UICollectionViewCell中有一个按钮,我正在尝试制作那个循环。当我在iPhone 5中运行时,按钮变得圆形,但如果我在iPhone 6或6+中运行,它就不会循环播放。

以下是我在" cellForItemAtIndexPath"

中使用的代码
    var btnImage = cell.contentView.viewWithTag(100) as UIButton
    btnImage.layoutIfNeeded()
    btnImage.layer.masksToBounds = true
    btnImage.layer.cornerRadius = btnImage.frame.size.height/2

此代码的结果如下 enter image description here

如果我使用下面的代码

<receiver android:name=".receivers.BackgroundTasksReceiver"/>

结果如下

enter image description here

有没有人对此问题有任何想法。 提前谢谢。

3 个答案:

答案 0 :(得分:4)

适用于此问题的解决方案如下:

cell.contentView.frame = cell.bounds //This is important line
var btnImage = cell.contentView.viewWithTag(100) as UIButton
btnImage.layoutIfNeeded() //This is important line
btnImage.layer.masksToBounds = true
btnImage.layer.cornerRadius = btnImage.frame.size.height/2

上面的代码使按钮完全循环。

答案 1 :(得分:1)

这是由于自动布局约束造成的。设置角半径大小后,可以增加高度和宽度。尝试在故事板中设置它。

答案 2 :(得分:0)

不能使用集合视图单元的Roundrect不是这种情况。我刚刚创建了一个演示应用程序来测试它并且它可以工作。以下是我演示的代码。

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    var cell:CollectionCell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CollectionCell

    // Configure the cell
    cell.roundTestButton.layer.cornerRadius = 10.0
    cell.roundTestButton.layer.masksToBounds = true

    println(cell.roundTestButton)

    return cell
}

或完整项目的here is git link