【发布时间】:2016-04-11 16:03:27
【问题描述】:
对于表格视图中的自定义标题视图,我有以下实现:
// Create Label
let label = UILabel(frame:CGRectMake(32,8,100,36))
label.text = title
// Create top dark grey rectangle
let headerImageView = UIImageView(frame: CGRectMake(17, 8, 130, 36))
headerImageView.image = UIImage(named: "Section Header")
// Create top rounded corner view with 16px margins
let width = UIScreen.mainScreen().bounds.size.width
let sectionTopImageView = UIImageView(frame: CGRectMake(16, 44, width-32, 4))
sectionTopImageView.image = UIImage(named: "Header Rounded Corners")
// Wrap it up
let headerView = UIView(frame:CGRectMake(0,0, width, 48))
headerView.backgroundColor = UIColor.clearColor()
headerView.addSubview(headerImageView)
headerView.addSubview(sectionTopImageView)
headerView.addSubview(label)
return headerView
所以基本上我想要一个两边都有 16px 边距的页眉。在情节提要中,我有一个背景为UIImageView 的单元格。此图像视图具有自动布局约束,因此我也可以在那里获得 16 个边距像素。
一切都应该对齐,但是当我运行模拟器或真正的 iPhone 时,我会为 iPhone 6 和更小的屏幕尺寸得到这个:
知道为什么吗?
编辑
我在此处添加单元格背景图像的代码。出于子类化的原因,我将这个背景的创建从情节提要中删除到代码中。这是我想出的:
override func awakeFromNib() {
super.awakeFromNib()
selectionStyle = .None
let width = UIScreen.mainScreen().bounds.width
let height = self.contentView.bounds.size.height
backgroundImageView = UIImageView(frame: CGRectMake(16, 0, width - 32, height+1))
backgroundImageView.image = UIImage(named: "Cell Background")
self.insertSubview(backgroundImageView, atIndex: 0)
}
我对这段代码有同样的问题。但是,@robmayoff 的这条线解决了它:
sectionTopImageView.autoresizingMask = [.FlexibleWidth]
这里是同一行:
backgroundImageView.autoresizingMask = [.FlexibleWidth]
【问题讨论】:
-
你把这些代码放在什么函数里?
-
@robmayoff
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
标签: ios swift uitableview storyboard screen-size