我希望在我的桌子为空时显示一条消息。我创建一个UILabel并将其设置为我的tableView的backgroundView,但是我想从tableView边框偏移文本。我在创建标签时通过减少UILabel宽度来尝试这个(请参阅下面的代码),但这并没有任何效果。
git subtree split
答案 0 :(得分:0)
参考UITableView类Reference
表视图的背景视图会自动调整大小以匹配 表格视图的大小。
我建议您使用DZNEmptyDataSet
或者在tableView的顶部实现带有标签的空视图。
答案 1 :(得分:0)
你的CGRect不工作的原因是我打赌,因为你有自动布局设置。 Autolayout不允许您在代码中通过CGRect进行更改。
继续并禁用Autolayout,看看会发生什么。
答案 2 :(得分:0)
添加一些约束以在视图中正确定位标签。请查看下面的代码以获取灵感,但请注意,这是一个非常快速和肮脏的解决方案。在print()
块中添加else
,您将看到多次调用该块。你绝对应该研究一下显示信息的更好方法。
else {
let width = self.tableView.bounds.size.width - 40.0
let messageLabel = UILabel()
messageLabel.text = "This is the message I would like to display when there is nothing returned from my model"
messageLabel.numberOfLines = 0
messageLabel.textAlignment = NSTextAlignment.Center
let widthConstraint = NSLayoutConstraint (
item: messageLabel,
attribute: NSLayoutAttribute.Width,
relatedBy: NSLayoutRelation.Equal,
toItem: nil,
attribute: NSLayoutAttribute.NotAnAttribute,
multiplier: 1,
constant: width
)
let xConstraint = NSLayoutConstraint(
item: messageLabel,
attribute: .CenterX,
relatedBy: .Equal,
toItem: self.tableView,
attribute: .CenterX,
multiplier: 1,
constant: 0
)
let yConstraint = NSLayoutConstraint(
item: messageLabel,
attribute: .CenterY,
relatedBy: .Equal,
toItem: self.tableView,
attribute: .CenterY,
multiplier: 0.85,
constant: 0
)
self.tableView.backgroundView = messageLabel
self.tableView.backgroundView?.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activateConstraints([widthConstraint, xConstraint, yConstraint])
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
}
这会给你: