【问题标题】:Is there a way to convert coordinate points between different device sizes? (iOS)有没有办法在不同设备尺寸之间转换坐标点? (iOS)
【发布时间】:2016-03-03 18:50:25
【问题描述】:

我正在关注一些在线教程,但代码适用于 iPad。我正在使用 iPhone,屏幕尺寸不同。问题是作者使用了专门为 iPad 制作的“幻数”。

我已经成功地创建了转换,因此它适用于任何设备。例如:

let xMid : CGFloat = CGRectGetMidX(self.frame)
let yMid : CGFloat = CGRectGetMidY(self.frame)
print("x: \(xMid) y: \(yMid)")

let height : CGFloat = CGRectGetHeight(self.frame)
let width  : CGFloat = CGRectGetWidth (self.frame)

makeSlotAt(CGPoint(x: xMid / 4.0,              y: 0), isGood: true)
makeSlotAt(CGPoint(x: xMid - xMid / 4.0,       y: 0), isGood: false)
makeSlotAt(CGPoint(x: xMid + xMid / 4.0,       y: 0), isGood: true)
makeSlotAt(CGPoint(x: xMid * 2.0 - xMid / 4.0, y: 0), isGood: false)

makeBouncerAt(CGPoint(x: 0,          y: 0))
makeBouncerAt(CGPoint(x: xMid / 2.0, y: 0))
makeBouncerAt(CGPoint(x: xMid,       y: 0))
makeBouncerAt(CGPoint(x: xMid * 1.5, y: 0))
makeBouncerAt(CGPoint(x: xMid * 2.0, y: 0))

无论如何,我只是想知道是否有一个函数或备忘单可以在设备尺寸之间进行数字转换。

谢谢!

【问题讨论】:

    标签: ios iphone swift coordinate-systems screen-size


    【解决方案1】:

    如果您使用的教程使用幻数,请立即停止使用。如果您使用自动布局并遵循 Apple 针对 iOS 7 及更高版本的指南,那么您很少(如果有的话)需要使用幻数。您创建的函数是代码内测量的良好开端。

    【讨论】:

    • 是的,这类教程会导致应用程序在状态栏大小翻倍(例如,在共享或热点时)时中断。
    • 根据经验,不要使用超过几年的 UIKit 教程,尤其是在你刚刚开始的时候。
    • 我学习的教程叫做 Hacking with Swift: hackingwithswift.com
    • Swift 教程?!根据定义,这些都不到两年,所以他们不应该使用幻数!如果您不介意我的询问,它是哪个特定的教程?
    • @NRitH 我正在谈论使用 Swift 进行黑客攻击:hackingwithswift.com 第 11 课:hackingwithswift.com/read/11/overview 第 14 课:hackingwithswift.com/read/14/overview
    猜你喜欢
    • 2021-08-30
    • 2021-05-07
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    相关资源
    最近更新 更多