ios - 根据设备的大小更改 UIImageViews 的位置

标签 ios iphone swift uiimageview runtime-error

我有一个 UIImageView 网格。 5S 上的布局看起来不错,但 6 或 6+ 上的网格位于左上角。我决定尝试测试屏幕尺寸,这在this中有解释。问题(测试有效);然后根据屏幕尺寸,按照this中的建议使用CGRectMake重新定位UIImageView。邮政。这是代码:

if UIDevice().userInterfaceIdiom == .Phone {
                switch UIScreen.mainScreen().nativeBounds.height {
                case 480:
                    println("iPhone Classic")
                case 960:
                    println("iPhone 4 or 4S")
                case 1136:
                    println("Default Setup")
                    println("iPhone 5 or 5S or 5C")
                case 1334:
                    dieImage0.frame = CGRectMake(42, 61, 152, 152)
                    dieImage1.frame = CGRectMake(247, 61, 152, 152)
                    dieImage2.frame = CGRectMake(42, 218, 152, 152)
                    dieImage3.frame = CGRectMake(247, 218, 152, 152)
                    dieImage4.frame = CGRectMake(42, 376, 152, 152)
                    dieImage5.frame = CGRectMake(247, 376, 152, 152)
                    dieImage6.frame = CGRectMake(42, 533, 152, 152)
                    dieImage7.frame = CGRectMake(247, 533, 152, 152)
                    println("iPhone 6")
                case 2208:
                    dieImage0.frame = CGRectMake(141, 201, 228, 228)
                    dieImage1.frame = CGRectMake(819, 201, 228, 228)
                    dieImage2.frame = CGRectMake(141, 723, 228, 228)
                    dieImage3.frame = CGRectMake(819, 723, 228, 228)
                    dieImage4.frame = CGRectMake(141, 1242, 228, 228)
                    dieImage5.frame = CGRectMake(819, 1242, 228, 228)
                    dieImage6.frame = CGRectMake(141, 1764, 228, 228)
                    dieImage7.frame = CGRectMake(819, 1764, 228, 228)
                    println("iPhone 6+")
                default:
                    println("unknown")
                }
            }

我知道测试有效,因为显示手机型号的消息打印正确,但图像的位置没有改变。然后当我触发 segue 转到第二个 View Controller 时

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showMenu" {
            println("You pressed the menu button")
        }

错误“ fatal error :展开可选值时意外发现 nil”被打印到控制台,并且在更改我正在测试的设备的图像位置的情况下的第一行抛出此错误:线程 1:EXC_BAD_INSTRUCTION(代码=EXC_1386_INVOP,子代码=0x0)。有什么想法为什么会发生这种情况吗?

最佳答案

试试这个,

1) 检查 imageview 的 socket 连接

2) 在 vi​​ewWillAppear 下添加这个函数,如下所示

override func viewWillAppear(animated: Bool) {

...
...
let screenSize: CGRect = UIScreen.mainScreen().bounds
    screenSize.origin
    let screenWidth = screenSize.width;
    let screenHeight = screenSize.height;
  if(screenHeight == 667)
  { 
   //do Something
  }
  else if(screenHeight == 667)
  {
   //do Something
  }


}

关于ios - 根据设备的大小更改 UIImageViews 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32444151/

相关文章:

ios - 在没有 iBeacon 的情况下实现地理围栏时,当应用程序未运行时未调用 didEnterRegion 和 didDetermineState

ios - 将 segues 用于以编程方式构建的 tableview 单元格

iphone - 我的 iPhone 应用程序图标应该采用什么分辨率?

ios - AwakeFromNib 没有导出

iphone - 测试 Facebook 原生 iOS 应用

iOS Deep linking and Universal link,如何在ios中进行深度链接

ios - 如何在 let 命令中添加先前声明的变量

objective-c - 我的 NSDictionary 的键是什么

ios - 在 MFMailComposeViewController 中预览多页 PDF

ios - 使用 Swift 强制 UIImagePickerController 打开方形相机