gpt4 book ai didi

ios - iPhone 6 plus 的屏幕尺寸问题

转载 作者:行者123 更新时间:2023-11-29 01:04:40 26 4
gpt4 key购买 nike

我在 TableView 中有以下自定义标题 View 的实现:

// 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 边距的页眉。在 Storyboard 中,我有一个带有背景 UIImageView 的单元格。此 ImageView 具有自动布局约束,因此我也可以在那里获得 16 像素的边距。

一切都应该对齐,但是当我运行模拟器或真正的 iPhone 时,我得到了 iPhone 6 和更小屏幕尺寸的这个: iPhone 6 and smaller : problem

但对于 iPhone 6 Plus,一切都完美对齐: iPhone 6 plus : works fine

知道为什么吗?

编辑

我在此处添加单元格背景图像的代码。出于子类化的原因,我将这个背景的创建从 Storyboard中删除到代码中。这是我想出的:

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]

导致这种奇怪的行为: enter image description here

最佳答案

我无法准确测量您的屏幕截图中事物的大小,因为它们似乎已经调整过大小。这会让我们更难为您提供帮助。

不过,我认为如果在将 subview 添加到标题 View 之前在 subview 上设置自动调整大小掩码,您可能会得到更好的结果:

sectionTopImageView.autoresizingMask = [ .FlexibleWidth, .FlexibleTopMargin ]

更新

awakeFromNib 中,self 具有它在 Storyboard或 xib 中的任何大小。它尚未针对设备屏幕或表格 View 或其他任何内容调整大小。

您根据设备屏幕尺寸调整 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]

关于ios - iPhone 6 plus 的屏幕尺寸问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com