我有标签并且我给出了XY轴的值,但是我的值没有将标签放在每个设备的中心,如果设备是大的设置宽度大小50,我写的宽度大小的方法,但是这个方法没有只需使用iPhone 6 + / 6S + / 7 +即可使用iPhone SE,5S / 5,6 / 6s / 7!例如像这样
那么什么是错的,我应该添加什么?
let lengthOfChar : CGFloat = data.ans.length // Characters form SQLite database
let yAxis : CGFloat = self.view.frame.height / 3 * 1.8
let width: CGFloat = view.frame.size.width - 40 // frame width
var targetWidth: CGFloat = (width - (lengthOfChar - 1) * 5) / lengthOfChar
if targetWidth > 50 {
targetWidth = 50
}
let totalWidth: CGFloat = (targetWidth * lengthOfChar) + ((lengthOfChar - 5) * 5)
let x : CGFloat = (width / 2) - (totalWidth / 2)
let xx : CGFloat = (CGFloat(indexTar) * targetWidth) + (CGFloat(indexTar) * 5) + 20
var xAxis : CGFloat = (x + xx)
xAxis = width - xAxis
答案 0 :(得分:0)
我正在使用帮助程序枚举,允许为某些iPhone执行自定义操作。设置下面的枚举和用法。
使用以下代码添加新课程:
enum DeviceType: Int {
case iPhone4 = 1
case iPhone5
case iPhone6
case iPhone6Plus
case iPad
init(userInterfaceIdiom: UIUserInterfaceIdiom, screenHeight: CGFloat) {
switch (userInterfaceIdiom, screenHeight) {
case (.phone, 0..<568.0):
self = .iPhone4
case (.phone, 568.0..<667.0):
self = .iPhone5
case (.phone, 667.0..<736.0):
self = .iPhone6
case (.phone, 736.0..<CGFloat.infinity):
self = .iPhone6Plus
case (.pad, _):
self = .iPad
default:
self = .iPhone6
}
}
func isSameOrSmaller(than deviceType: DeviceType) -> Bool {
return self.rawValue <= deviceType.rawValue
}
}
<强>用法强>:
if UIDevice.current.type().isSameOrSmaller(than: .iPhone5) {
// Do what you need
}
答案 1 :(得分:0)
在代码中使用自动布局
label.translatesAutoresizingMaskIntoConstraints = false
label.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
label.heightAnchor.constraint(equalToConstant: 40).isActive = true
label.widthAnchor.constraint(equalToConstant: 150).isActive = true
label.topAnchor.constraint(equalTo: self.purpleBox.bottomAnchor, constant: 20).isActive = true
你可以用它做任何你想做的事。这非常强大。
您可以使用的其他一些锚点
// centerYAnchor
// leftAnchor
// rightAnchor
// bottomAnchor
答案 2 :(得分:-1)
我解决了我的问题,这是一个解决方案:
postfix operator %
postfix func % (percentage: CGFloat) -> CGFloat {
return (CGFloat(percentage) / 100)
}
let yAxis : CGFloat = (self.view.frame.height) * 60%
if lengthOfChar >= 8 {
targetWidth = 40
} else {
targetWidth = 50
}