聚焦自定义UITableCell时,移除类似薄的边框

时间:2016-12-06 15:31:39

标签: swift tvos

问题:

如何在对焦自定义UITableCell时删除类似白色的薄边框?

(说实话,它与单元格的边界无关,我已经尝试修改边框的颜色以查看)

说明

这似乎只有在我通过故事板离开表格单元格的默认焦点样式时才会发生,当我删除单元格上的默认焦点动画时,不会出现白色边框(但是我必须实现自己的自定义动画..)

我试图用不同的颜色和色调来玩,但这似乎不起作用。

border when focusing different cells

以上gif显示聚焦特定UITableCell时出现的白色边框

我的UITableViewController故事板的屏幕截图。

UITableViewCell

上图是UITableViewCell

的属性检查器的屏幕截图

Content View of my UITableViewCell

上面的图片是我的UITableViewCell的内容视图的属性检查器的屏幕截图

TableView 上图是UITableView

的属性检查器的屏幕截图

2 个答案:

答案 0 :(得分:3)

<强>更新

它不是边界,而是阴影。现在UITableViewCellFocusStyle.default可能在聚焦时将阴影设置为单元格,当您在隐藏它时滚动时,阴影可以在短时间内看到。

你可以像这样隐藏阴影:

func tableView(_ tableView: UITableView, didUpdateFocusIn context: UITableViewFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
     if let cell = context.nextFocusedView as? CustomTableViewCell {
        cell.layer.shadowOpacity = 0
        cell.layer.masksToBounds = true
     }
     //other configurations
}

注1 :使用上述代码短时间内出现阴影。使用下面的代码没有阴影。

或者,你可以使用UITableViewCellFocusStyle.custom并手动提供默认焦点动画而不用阴影

func tableView(_ tableView: UITableView, didUpdateFocusIn context: UITableViewFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
    let xScale = 1.008
    let yScale = 1.008
    if let cell = context.nextFocusedView as? CustomTableViewCell {
           coordinator.addCoordinatedAnimations({ () -> Void in
                cell.transform = CGAffineTransform(scaleX: CGFloat(xScale), y: CGFloat(yScale))
            }, completion: nil)
    }

    if let previous = context.previouslyFocusedView as? CustomTableViewCell {
        coordinator.addCoordinatedAnimations({ () -> Void in
            previous.transform = CGAffineTransform.identity                
        }, completion: nil)
    }
    } 

注意:

尝试使用 xScale &amp; yScale 值可获得更好的动画效果。

答案 1 :(得分:0)

将细胞焦点样式更改为自定义

Focus Style Custom