升级到Xcode 6后,CALayer的位置发生了变化

时间:2014-09-22 11:47:07

标签: ios iphone xcode calayer xcasset

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

我正在做这种事情来顺序定位图层。

-(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;

}

非常感谢。

1 个答案:

答案 0 :(得分:0)

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

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?