UITableView.appearance().separatorStyle 不起作用

Posted

技术标签:

【中文标题】UITableView.appearance().separatorStyle 不起作用【英文标题】:UITableView.appearance().separatorStyle not working 【发布时间】:2015-04-23 18:59:46 【问题描述】:

在我的 AppDelegate 中,我设置了 UITableView 的外观,例如背景和 rowHeight 等。但不知何故,它不适用于separatorStyle。是否有任何原因导致它不起作用或者这是一个错误?我在 ViewController 本身中使用 tableView.separatorStyle = .None 设置 separatorStyle 没有问题。

我的 AppDelegate 中的代码:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
    application.statusBarHidden = true

    UIToolbar.appearance().barTintColor = UIColor.grayColor()

    UITableView.appearance().backgroundColor = UIColor.blackColor()
    UITableView.appearance().rowHeight = 40
    UITableView.appearance().separatorStyle = .None

    UITableViewCell.appearance().backgroundColor = UIColor.clearColor()

    return true

奇怪的是,separatorColor 确实有效。

编辑:

当我查看UITableView 时,会显示:

// Appearance

var sectionIndexMinimumDisplayRowCount: Int // show special section index list on right when row count reaches this value. default is 0
@availability(ios, introduced=6.0)
var sectionIndexColor: UIColor? // color used for text of the section index
@availability(iOS, introduced=7.0)
var sectionIndexBackgroundColor: UIColor? // the background color of the section index while not being touched
@availability(iOS, introduced=6.0)
var sectionIndexTrackingBackgroundColor: UIColor? // the background color of the section index while it is being touched

var separatorStyle: UITableViewCellSeparatorStyle // default is UITableViewCellSeparatorStyleSingleLine
var separatorColor: UIColor! // default is the standard separator gray
@availability(iOS, introduced=8.0)
@NSCopying var separatorEffect: UIVisualEffect? // effect to apply to table separators

有点奇怪,因为它在评论Appearance下。与separatorColor 相比,标头也没有任何不同。

【问题讨论】:

【参考方案1】:

这并没有什么“奇怪”、“不工作”或“错误”。并非所有东西都与外观代理兼容。看标题:

@property (nonatomic) UITableViewCellSeparatorStyle separatorStyle; // default is UITableViewCellSeparatorStyleSingleLine
@property (nonatomic, retain) UIColor *separatorColor UI_APPEARANCE_SELECTOR; // default is the standard separator gray

注意到什么了吗? separatorColor 标记为 UI_APPEARANCE_SELECTORseparatorStyle 不是。这意味着您可以将separatorColor 与外观代理一起使用,而您不能separatorStyle 与外观代理一起使用。

【讨论】:

我也检查过了,但是在 Swift 中它没有显示 UI_APPEARANCE_SELECTOR,还是我看错了部分? (我已经用 Swift 中可见的问题编辑了我的问题) 不,它不会出现在标题的 Swift 翻译中,但这不是重点。重点是我在回答中所说的 - 并非所有内容都与外观代理兼容:特别是分隔符颜色是,分隔符样式不是。这就是事实。不是错误。事实。标题是否告诉你这个事实并不重要;这仍然是事实。我只是使用标题来表明这 一个事实。 冷静的人,我从来没有说过你错了,甚至不同意你。当两种方法看起来相同时,质疑某事是否是一种犯罪?显然,试图理解某些事情值得投反对票。在这里为新手加油! 当我使用 Swift 时,您的方法无法弄清楚为什么它不起作用。因此,每当某些东西不起作用时,我只需要假设 并非所有东西都兼容 并继续前进,放弃并使用另一种方式。很棒的一课。

以上是关于UITableView.appearance().separatorStyle 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 九

全局设置UITableView的属性|正确计算contentSize|MJRefresh mj_footer 能正常隐藏在底部,不因为数据过少展示在页面中部

tableView 使用 reloadSections:withRowAnimation: 时,会跳动的问题

如何从 WatchOS 的 SwiftUI 列表中删除分隔符?

删除列表中的黑色填充(SwiftUI)

SwiftUI:仅更改 UITableViewAppearance 的一个实例