我遇到了一个问题,希望您能帮助我!事实证明,这是我第一次遇到实际iPhoneX设备的UI与XCode模拟器的UI不同的问题。以下是此图片:
Left is the actual device, and Right is the simulator
一个带有金色边框的框是此问题的唯一受害者。我尝试过重新启动计算机和电话,并且还将电话和XCode更新为最新版本。与iPhone 6类似的问题。我已将问题UIImageView的代码放入 searchBack 。其尺寸取决于设备的显示尺寸,并且其位置在iPhone和iPad上也不同:
searchBack = UIImageView(frame:CGRect(x:0, y:0, width: displayWidth*0.9, height: displayHeight*0.1))
if UIDevice.current.model.range(of: "iPad") != nil {
self.searchBack.center = CGPoint(x: self.displayWidth*0.5, y: self.displayHeight*0.255)
} else {
self.searchBack.center = CGPoint(x: self.displayWidth*0.5, y: self.displayHeight*0.207)
}
searchBack.image = UIImage(named: "searchBar Borders.png")
searchBack.contentMode = .scaleToFill
self.view.addSubview(searchBack)
非常感谢您的帮助! adv中的Chrz
答案 0 :(得分:0)
好的,结果是,当我试图找出正在发生的事情时,我随机注释了下面的代码块,运行了它,然后取消了注释,再次运行了,问题解决了。
if ( UIDevice.current.model.range(of: "iPad") != nil){
self.searchBack.center = CGPoint(x: self.displayWidth*0.5, y: self.displayHeight*0.255)
} else {
self.searchBack.center = CGPoint(x: self.displayWidth*0.5, y: self.displayHeight*0.207)
}
如果有人可以向我解释为什么会发生这种情况,那将是惊人的,这样我就可以避免在下一次这样的事情上浪费时间。
答案 1 :(得分:0)
该代码放在哪里? ViewDidLoad?
我建议使用自动布局,而不是像这样计算大小。另外,在那一点上,superView的宽度有时会与实际屏幕尺寸不同。
发生这种情况是因为视图尚未在viewDidLoad上计算实际屏幕大小。这会在视图生命周期的稍后阶段发生。
如果您使用自动布局来正确缩放和定位视图,则引擎将基于对所有不同设备施加的约束来计算尺寸。
同样,您可以有一些逻辑来为iPad设置不同的约束,也可以使用iOS提供的“设备特征”,以帮助您识别不同的屏幕类别和方向。
如果能帮助您理解该问题并接受它,我将不胜感激。
谢谢!