谁能帮我解决这个 xcode 问题?
Posted
技术标签:
【中文标题】谁能帮我解决这个 xcode 问题?【英文标题】:Can anyone help me with this xcode issue? 【发布时间】:2014-04-03 10:24:43 【问题描述】:我正在尝试让我的应用在 iPad 上正确显示,就像我在文本位置运行它时一样;
label.position = CGPointMake(-180, -135);
这是为 iPhone res 位置设置的,但当然,在 iPad 上运行时,该位置完全关闭(iPhone 仍然在同一个位置)。
如果检测到 iPad,我可以添加什么来自动调整位置吗?
我的atm完整代码如下!;
SKLabelNode *label = [SKLabelNode labelNodeWithFontNamed:@"Helvetica"];
label.fontSize = 14;
label.fontColor = [SKColor yellowColor];
label.text = @"-Shield Power-";
label.position = CGPointMake(-180, -135);
label.alpha = 1;
[self addChild:label];
【问题讨论】:
只需相对于 self.frame.origin.x 制作标签位置 我对 spritekit 不熟悉。但是在 Cocos 2D 中,我们必须设置 AnyObject.Positiontype = yourpositiontype。希望这可以帮助你。 【参考方案1】:您可以通过某种方式检测您是在 iPad 还是 iPhone 上运行。然后为该位置实现一个 if 语句。
UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
// iPad
else
// iPhone
话虽如此,您也可以尝试自动布局和约束。您可以有两个故事板(每个设备一个)并分别设置视图。
【讨论】:
这条评论出现在我测试另一个评论的时候,非常感谢你! 没问题。很高兴能提供帮助。 嘿 Marcal 我刚刚遇到了另一个问题...现在我有 3.5 英寸的 iPad 和 iPhone 的位置,但 4 英寸的版本仍然没有!噩梦或新手什么的!似乎只有 UIUserInterfaceIdionPad 和 Phone 版本是否有其他手机尺寸的第三个选项? 找到了!最后我不得不使用这个 CGSize screenSize = [[UIScreen mainScreen] bounds].size; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) if (screenSize.height > 480.0f) /*在这里做 iPhone 5 的东西*/ else /*在这里做 iPhone 经典的东西*/ else /*做iPad 的东西在这里。*/ 【参考方案2】:您想使用 CGGeometry 类 - https://developer.apple.com/library/ios/documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html - 这将使您能够执行以下操作:
CGRectGetWidth(self.view.frame);
和
CGRectGetMinY(self.view.frame);
然后为你的 CGPoint 构造 X 和 Y 坐标,例如
CGPointMake(CGRectGetMinX(self.view.frame)-180,CGRectGetMinY(self.view.frame)-135);
或使用百分比,让一切以动态方式发生,如下所示:
CGPointMake(CGRectGetMinX(self.view.frame)-CGRectGetWidth(self.view.frame)*0.5,CGRectGetMinY(self.view.frame)-CGRectGetHeight(self.view.frame)*0.3);
【讨论】:
非常感谢各位回复的欢呼,我刚刚尝试使用您的建议,但无论我更改什么值,文本现在都保留在 iPhone 和 iPad 的屏幕中间-180/-135 也是。有什么建议吗? 检查您引用的框架。这是一些基本的示例代码来证明它可以工作UIView *blue = [[UIView alloc] initWithFrame:CGRectMake(CGRectGetMinX(self.view.frame)-CGRectGetWidth(self.view.frame)*0.5, CGRectGetMinY(self.view.frame)-CGRectGetHeight(self.view.frame)*0.3, 100, 100)]; blue.backgroundColor = [UIColor blueColor]; [self.view addSubview:blue]; [UIView animateWithDuration:2.0 animations:^blue.center=CGPointMake(CGRectGetMinX(self.view.frame)+CGRectGetWidth(self.view.frame)*0.5, CGRectGetMinY(self.view.frame)+CGRectGetHeight(self.view.frame)*0.3);];
以上是关于谁能帮我解决这个 xcode 问题?的主要内容,如果未能解决你的问题,请参考以下文章