繁体   English   中英

iPhone 6 plus的屏幕尺寸问题

[英]Screen size issue on iPhone 6 plus

对于表视图中的自定义标题视图,我具有以下实现:

// 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个边距px。

一切都应该对齐,但是当我运行模拟器或真实的iPhone时,我会在iPhone 6和较小的屏幕尺寸上看到此信息: iPhone 6及以下:问题

但是对于iPhone 6 Plus,一切都完美地结合在一起: iPhone 6 plus:效果很好

知道为什么吗?

编辑

我在这里添加单元格背景图片的代码。 由于子类化的原因,我从故事板到代码中删除了此背景的创建。 这是我想出的:

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]

导致这种奇怪的行为: 在此处输入图片说明

我无法准确测量屏幕截图中事物的大小,因为它们似乎已调整大小。 这使得帮助您变得更加困难。

不过,我认为如果在将子视图添加到标题视图之前对其设置自动调整大小蒙版,则可能会获得更好的结果:

sectionTopImageView.autoresizingMask = [ .FlexibleWidth, .FlexibleTopMargin ]

更新

awakeFromNibself具有情节提要或xib中的大小。 尚未针对设备屏幕或表格视图或其他内容调整大小。

您正在根据设备屏幕的大小调整backgroundImageView的大小,(此时)该大小与self.bounds.size

如果您认为backgroundImageView.bounds.size.width应该比self.bounds.size.width小32个点,则可以这样设置:

backgroundImageView = UIImageView(frame: CGRectMake(16, 0, bounds.size.width - 32, height+1))
backgroundImageView.autoresizingMask = [.FlexibleWidth]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM