UIButton`setTitleShadowColor:ForState`无法按预期工作

时间:2015-09-25 02:19:40

标签: ios swift uibutton swift2

我有一个带有CustomCollectionViewCell类的UICollectionView。 在单元格里面,我有一个我用故事板设置的按钮。我希望按钮在点击时改变颜色,但是我选择的颜色与标题的阴影颜色不同于选择后的背景。

我尝试使用setTitleShadowColor:ForState.Selected.Normal进行修复。但它似乎没有做任何事情。

的ViewController:

...
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return numberOfButtons
}


func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CustomCollectionViewCell
    cell.setContents(indexPath.row)
    return cell
}
...

CustomCollectionViewCell:

...
func setContents(row: Int) {
    buttonInCell.setTitle(String(row + 1), forState: .Normal)
    buttonInCell.setTitleColor(UIColor.blueColor(), forState: .Normal)
    buttonInCell.layer.backgroundColor = UIColor.whiteColor().CGColor
    buttonInCell.layer.cornerRadius = buttonRadius
    buttonInCell.layer.borderColor = UIColor.blueColor().CGColor
    buttonInCell.layer.borderWidth = buttonBorderWidth
}

func changeButtonStatus(sender: UIButton) {
    if sender.selected {
        sender.setTitleColor(UIColor.blueColor(), forState: .Normal)
        sender.layer.backgroundColor = UIColor.whiteColor().CGColor
    } else {
        sender.setTitleColor(UIColor.blueColor(), forState: .Normal)
        sender.layer.backgroundColor = UIColor.blueColor().CGColor
    }
}
// MARK: Actions

@IBAction func buttonInCellTapped(sender: UIButton) {
    changeButtonStatus(sender)
    sender.selected = !sender.selected
}
...

1 个答案:

答案 0 :(得分:0)

我刚刚找到了一个解决方案,只需将按钮类型更改为" custom"在Xcode的属性检查器中。