- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 GUI,其中包含一个主菜单、第二个屏幕和一个返回主菜单的按钮。在初始主菜单中,我使用以下代码行:
midScreenX = [UIScreen mainScreen].bounds.size.width/2;
midScreenY = [UIScreen mainScreen].bounds.size.height/2;
WarScene *battle = [[WarScene alloc] initWithSize: CGSizeMake(midScreenX*2, midScreenY*2)];
SKTransition *reveal = [SKTransition revealWithDirection:SKTransitionDirectionDown duration:1.0];
SKView * skView = (SKView *)self.view;
UIView *viewToRemove = [self.view viewWithTag:101];
[viewToRemove removeFromSuperview];
[skView presentScene:battle transition:reveal];
这行得通……我想。我打开了一个新场景,我的第二个场景大小正确并且至少填满了屏幕。那个场景中有一个节点对于屏幕来说太大了,我正在努力改变它,但我认为这不会真正影响 UIScreen 的边界。
当我使用以下代码返回主菜单时出现问题:
midScreenX = [UIScreen mainScreen].bounds.size.width/2;
midScreenY = [UIScreen mainScreen].bounds.size.height/2;
GameScene *map = [[GameScene alloc] initWithSize: CGSizeMake(midScreenX*2 ,midScreenY*2)];
SKTransition *reveal = [SKTransition revealWithDirection:SKTransitionDirectionDown duration:1.0];
SKView * skView = (SKView *)self.view;
UIView *viewToRemove = [self.view viewWithTag:3];
[viewToRemove removeFromSuperview];
[skView presentScene:map transition:reveal];
据我所知,传递的值应该与最初为 [UIScreen mainScreen].bounds.size 发送的值完全相同,但初始化的场景太大了。
有什么我可以做的可能会影响 [UIScreen mainScreen].bounds.size 的事情吗?还是我误解了 init 和 .bounds 的实际作用?
就我自己尝试解决此问题所做的工作而言,我查看了场景通常如何初始化的示例。我看到经常使用值代替 .bounds 例如:
initWithSize: CGSizeMake(1024,768)
但是,这是否意味着场景在不同设备上无法正确/完整显示?
最佳答案
如果您使用的是 iOS 6 或 iOS 7,[UIScreen mainScreen].bounds.size.width 和 [UIScreen mainScreen].bounds.size.height 在所有方向上都是相同的..但在 iOS 8 中,它在横向模式下给出一个值,在纵向模式下给出另一个值
NSLog(@"width %f",[[UIScreen mainScreen] bounds].size.width); //portrait ios7 or 6 = 320 , landscape ios7 or 6 = 320
NSLog(@"height %f",[[UIScreen mainScreen] bounds].size.height); //portrait ios7 or 6 = 568 , landscape ios7 or 6 = 568
NSLog(@"width %f",[[UIScreen mainScreen] bounds].size.width); //portrait ios8 = 320 , landscape ios8 = 568
NSLog(@"height %f",[[UIScreen mainScreen] bounds].size.height); //portrait ios8 = 568 , landscape ios8 = 320
所以我们可以这样检查条件,
CGFloat midScreenX,midScreenY;
if (UIDeviceOrientationIsLandscape((UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation]))
{
//landscape mode
midScreenX = ([[UIScreen mainScreen]bounds].size.width>[[UIScreen mainScreen]bounds].size.height?[[UIScreen mainScreen]bounds].size.width:[[UIScreen mainScreen]bounds].size.height)/2;
midScreenY = ([[UIScreen mainScreen]bounds].size.width<[[UIScreen mainScreen]bounds].size.height?[[UIScreen mainScreen]bounds].size.width:[[UIScreen mainScreen]bounds].size.height)/2;
}
else
{
//portrait mode
midScreenX = [[UIScreen mainScreen]bounds].size.width/2;
midScreenY = [[UIScreen mainScreen]bounds].size.height/2;
}
我希望你 warScene 和 gameScene 是 SKScene 的子类。 initWithSize 方法返回一个新初始化的场景对象。参数“size”是以点为单位的场景大小。
关于ios - 目标 - C,[UIScreen mainScreen].bounds.size.width 实际给出什么以及 initWithSize : actually require? 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32113335/
在我的应用程序中,我想从另一个 MainScreen 打开一个 MainScreen。我该怎么做? 在 UiApplication 中,我可以使用 pushScreen(Screen) 转到 Main
我最近做了并更新了我的 Xamarin iOS 项目,我曾经能够调用以下代码来检索屏幕宽度和高度: if (orientation == UIInterfaceOrientation.Landscap
这个问题在这里已经有了答案: App not sized properly iOS 8 iPhone simulator (1 个回答) 关闭 8 年前。
您好,我正在以编程方式启动一个 rootViewController(只有门户,没有风景) 这是代码使用 CGRect appFrame = [[UIScreen mainScreen] bounds
我有点生气。我有一个应用程序,其状态栏在主窗口中可见。因为我想动态设置我的 View 及其框架大小(例如,状态栏在通话期间可能占用 40 像素)。 我可以执行以下两个操作之一: [[UIScreen
documentation [NSScreen mainscreen] 具有误导性。 The main screen is not necessarily the same screen that c
documentation [NSScreen mainscreen] 具有误导性。 The main screen is not necessarily the same screen that c
我试图让屏幕宽度在 iPhone 6 上显示不同的图像。但是,当我检查宽度或高度时,UIScreen.mainScreen().bounds 始终为零。知道为什么吗? 最佳答案 let height
这个问题在这里已经有了答案: Swift - SpriteKit CGPoint Alignment (1 个回答) 关闭 6 年前。 我正在使用 SpriteKit 在 Swift 中制作游戏,但
所以基本上我的问题是。边界 CGRect 是随屏幕方向变化还是静态的? 谢谢! 最佳答案 刚刚在 iPhone 模拟器上测试过 - 它总是为所有方向返回相同的值 {{0, 0}, {320, 480}
我不得不问。使用 [[UIScreen mainScreen] applicationFrame] 是在纵向模式下获取 iphone 或 ipad 工作区域的漂亮方法。但是,如果我想在横向上获得相同的
因此,我使用最新版本的 XCode 创建了一个新项目,并尝试记录我的应用程序的屏幕大小(以确定 UI 的设备类型)。我从我的 iPhone 5 运行以下代码: NSLog(@"%f", [[UIScr
我有一个应用程序是在新的 iPhone 5 视网膜宽屏设备之前创建的。现在我正在尝试支持这种高清宽屏。 我调整主 ViewController 和主窗口 XIB 文件,以便将它们设置为自动布局。我可以
在iPhone5上,[[UISCreen mainScreen]边界] .size返回为320x480。为什么。在我正在阅读的所有帖子中,人们都说它返回正确的屏幕尺寸。这里发生了什么?我是否在.pli
这是我在调试应用程序时观察到的情况。我的应用程序本质上是一个单线程应用程序。 应用程序最初只有一个线程。 线程 1:队列:com.apple.main-thread。 在我的应用程序中,当点击以下代码
试图将 iPad 应用程序移植到 iPhone。 当我将设备类型设置为 iPhone 并在下面执行时 [[UIScreen mainScreen] bounds] 即使在 iPhone 6+ 中也返回
如果我使用 IScreen.mainScreen().bounds 来获取方向更改后的屏幕大小,我有时会得到“错误”(=“另一个”)屏幕大小(与当前不相关的方向相关)被显示)。我尝试直接在通过通知中心
一些核心类使用函数返回其自身的实例: NSFileManager.defaultManager() PHImageManager.defaultManager() UIScreen.mainScree
我想获取主屏幕的尺寸,所以我使用这个片段: NSLog(@"mainScreen frame = %@", [[NSScreen mainScreen] visibleFrame]); 正在打印 ma
我正在尝试将浏览器字段添加到我的主屏幕上。目前,我有: public class BrowserFieldDemo extends UiApplication { private MainScreen
我是一名优秀的程序员,十分优秀!