【问题标题】:Problem adapting scale factor for iPad x2 compatibility mode为 iPad x2 兼容模式调整比例因子时出现问题
【发布时间】:2010-10-06 14:59:54
【问题描述】:

我想知道是否有人可以帮助我关注。我编写了一个 Quartz 2d ap 并使用以下代码为每个设备获取正确的比例因子:

if ([UIScreen instancesRespondToSelector:@selector(scale)])
{
        return [[UIScreen mainScreen] scale];
}
else
{
        return 1.0;
}

然后在我的代码中将所有值乘以这个比例乘数。我遇到的问题是该应用程序无法在 ipad 上以 x2 模式正确显示 - 一切都太大了两倍。有人可以帮帮我吗?

谢谢,

马丁

【问题讨论】:

    标签: iphone ipad quartz-2d


    【解决方案1】:

    比例因子与新款 iPhone 和 iPod touch 上的 Retina 显示屏有关,而不是 iPad 上的 2X 缩放设置。实际上,您引用的 UIScreen scale 属性在 iPad 当前的 3.2 OS 版本上不存在,仅在 4.0+ 上存在。在当前运行 OS 4.2 beta 的 iPad 上,它应该总是返回 1.0。

    2X 模式下 Quartz 绘图的问题you are experiencing 一定来自其他地方。您是否对代码中的任何元素进行任何特定于设备的检查?

    【讨论】:

    • 实际上问题是直到 4.0 的 scale 属性才 /defined/ ,但它在 3.2 中确实存在(作为未记录的属性)并且做了一些不同的事情(报告非 iPad 应用程序的绘图比例,基本上是 1.0 或 2.0,具体取决于应用程序的规模大小)。因此,在这种情况下,仅测试属性的存在对 OP 没有帮助,他必须检查版本是 4.0 或更高版本。
    • 嗨布拉德。感谢您的回答。我的代码中没有特定于设备的检查 - 我只是获取上面返回的值,并通过它对所有 x 和 y 值进行多重处理。如果我将上面的内容更改为使用对 contentsScaleFactor 的响应,那么它可以在 iPad 上正常工作(也在 x2 模式下)但在 iPhone 4 上停止工作 - 一切都是大小的一半:(
    • 杰森-谢谢!这是有道理的——ipad 返回的值是 2,因此所有东西的大小都是原来的两倍。我该如何解决这个问题?
    • @Jason - 我没有意识到这一点。我现在可能需要检查我的代码,以确保我没有在某些地方做出错误的假设。
    • @Ohnomycoco - 不。您可以使用float ver = [[[UIDevice currentDevice] systemVersion] floatValue]; 获取版本,然后将ver 的值与您拥有的任何操作系统版本阈值进行比较。
    【解决方案2】:

    我不确定这是否是您的问题,但您似乎想测试 UIScreen 的选择器比例。它永远不会有。该选择器仅适用于 [UIScreen mainScreen]。

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    {
         return [[UIScreen mainScreen] scale];
    }
    else    
    {
         return 1.0;
    }
    

    虽然,这个错误会让你认为它总是返回 1.0 的比例。

    【讨论】:

    • 请改用[[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)]。 Scale 存在于 iOS
    猜你喜欢
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多