如何计算与窗口大小相关的距离

时间:2016-02-22 17:42:21

标签: ios iphone swift uiviewcontroller

我希望适用于所有iPhone屏幕的UIButton:

  • iPhone 4s
  • iPhone 5
  • iPhone 5s
  • iPhone 6s Plus

我如何根据屏幕尺寸计算距离?

我需要为所有iPhone屏幕安装暂停按钮和录制按钮。

实际上,它在iPhone 6上看起来很完美,但在iPhone 6上它看起来非常不同。

我没有使用Storyboard!我只需要用代码来做这件事非常重要!

iPhone 6:

enter image description here

iPhone 6 Plus:

enter image description here

GameViewController:

暂停按钮:

 func addPauseButton() {
        //create Pause Button
        PauseButton = UIButton.init(frame: CGRectMake(self.view!.frame.size.width/2 + 150,self.view!.frame.size.height/2 - 315 ,30,30))

        PauseButton.setImage(UIImage(named: "Pause-Button.png"), forState: UIControlState.Normal)

        PauseButton.addTarget(self, action: "pressedPauseGame:", forControlEvents: .TouchUpInside)

        self.view.addSubview(PauseButton)
}

记录按钮:

func addRecordButton() {

            startRecordingButton = UIButton.init(frame: CGRectMake(self.view!.frame.size.width/2 + 155 ,self.view!.frame.size.height/2 - 275 ,25,25))

            startRecordingButton.setImage(UIImage(named: "Record-Off.png"), forState: UIControlState.Normal)

            startRecordingButton.addTarget(self, action: "startRecordingButtonTapped:", forControlEvents: .TouchUpInside)

            self.view.addSubview(startRecordingButton)

            stopRecordingButton = UIButton.init(frame: CGRectMake(self.view!.frame.size.width/2 + 155 ,self.view!.frame.size.height/2 - 275 ,25,25))

            stopRecordingButton.setImage(UIImage(named: "Record-On.png"), forState: UIControlState.Normal)

            stopRecordingButton.addTarget(self, action: "stopRecordingButtonTapped:", forControlEvents: .TouchUpInside)

            self.view.addSubview(stopRecordingButton)

    }

2 个答案:

答案 0 :(得分:0)

“StoryBoard”是你的朋友,现在花些时间学习如何使用storyBoards为将来节省大量时间,请看下面的图片,所有按钮,完全在所有设备上的同一个地方,零编码工作。一些好主意,一些旧的编码器没有使用,(或编码器也习惯于在电脑屏幕上编码每个x,y点)

不幸的是,有些老计时器进入Apple,然后我们丢失了东西......比如xCode快照......太糟糕了,所以使用它或丢失它。

enter image description here

答案 1 :(得分:0)

实际呈现视图的大小仅在will-layout或将出现的视图控制器回调中有效,因此,如果在代码中创建UI对象,则可能需要(重新)调整UI的帧大小对象成为当时视图rect的所需比例(在后面的回调中,而不是接近init或启动时间的早期方法)。

当用户在较新的iPad上旋转显示器或其他内容到应用程序窗口大小时,也会有视图转换回调。