【问题标题】:After upgrading to Xcode 6, CALayer positions have changed升级到 Xcode 6 后,CALayer 位置发生了变化
【发布时间】:2014-11-16 09:02:49
【问题描述】:

我的应用程序使用大量以编程方式定位的 CALayers,并且我对所有图像都使用图像资产目录。昨晚,我升级到 Xcode 6 开始为 iPhone 6 准备应用程序。然而,当我在模拟器中检查时,即使在 iPad Retina 设备中,似乎也没有正确定位 CALayer。所以,我想知道,有人知道问题可能出在哪里吗?

顺便说一句,我正在做这种事情来定位图层。

-(CALayer *)loadLayer:(CGFloat)x :(CGFloat)y :(CGFloat)width :(CGFloat)height :(NSString *)layerName
{

CALayer *layerToAdd = [[CALayer alloc] init];
[layerToAdd setBounds:CGRectMake(0, 0, width, height)];
[layerToAdd setPosition:CGPointMake(x + width/2, y + height/2)];
layerToAdd.name = layerName;
[self.view.layer addSublayer:layerToAdd];
return layerToAdd;

}

非常感谢。

【问题讨论】:

  • 你是指 Xcode 6 还是 iOS 8?
  • 我的意思是 Xcode 6。我的应用程序似乎在 iOS 8 上运行良好。所以我认为问题一定出在我的项目在 Xcode 6 中构建的方式上。在模拟器上,我我在 iOS 8 上查看它,但该应用程序应该支持 iOS 7 iOS 6。我还应该说,我到目前为止只在模拟器上尝试过。

标签: ios iphone xcode calayer xcasset


【解决方案1】:

我想我已经将问题追溯到现在已经切换到更直观的宽度和高度属性。我的应用程序仅在横向模式下运行并查看我的代码,似乎在 Xcode 6(或更早版本?)之前,宽度是纵向模式下设备的物理宽度 - 所以即使它在横向模式下运行,“宽度”实际上指的是高度。因此,我只需更改以下两行即可解决我的应用程序的大部分问题:

viewWidthInPoints =  bounds.size.height;
viewHeightInPoints =  bounds.size.width;

viewWidthInPoints =  bounds.size.width;
viewHeightInPoints =  bounds.size.height;

只是在这里回答,以防有人遇到类似问题。

更多详情可以在这里找到:Is [UIScreen mainScreen].bounds.size becoming orientation-dependent in iOS8?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2019-03-17
    相关资源
    最近更新 更多