自从 iPhone 5 与 iOS 6 上市之后, iPhone 有了多种解析度与方向,以往一个简单的数字座标设定,眼下在不同解析度下面,就会有不同的结果。如果只想知道程式化手动建立 Constranints, 可以看这儿:手动建立Constransts 
先看一下实做Demo:
  


举例来说,如果我们在XCode 没有支援 autolayout 的版本(或关掉)下,用 StoryBoard 设定了一个 Button 并放在画面中间的下面,大概会是这个样子:

萤幕快照 2012-10-17 下午9.59.12
我们去看这个 Button 的 Layout  属性的话,会看到这些:

 

萤幕快照 2012-10-17 下午10.02.34
这表示这个 Button 定位是在左上角起的座标,124, 397 的 位置下,设定了一个 width 73, height 44 的 Button。

这样的设定似乎没什么问题,但其实是不是很理想,因为这是固定位置,所以在不同的解析度或方向时,就要重新设定位置,横向的时候,和四吋的萤幕时,就要用程式重新计算,无法使用 IB 工具来设定画面。在原生的状况下,画面将会出现:

横向(Button 不见):

萤幕快照 2012-10-17 下午10.26.59  

 

我在四吋萤幕下留下底部空白:

萤幕快照 2012-10-17 下午10.29.23

 

  

但同样的东西,在新版支援 AutoLayout 的情形下,结果与设定是完全不同的。同样的我们在新版的 XCode (4.5.1 版之后 支援 iOS 6 Auto Layout 的情形下,我们会发现 StoryBoard 编辑画面和以往的设定,有些不一样了,其中有一个选项,叫做 Use auto layout。这个选项预设是开启的,在开启的状况下如果我们拉入一个 Button 和以往的情形,有一些不同。

 

萤幕快照 2012-10-17 下午10.34.58


他不再只是让你设定座标了,而是多了两个 Constranints。


萤幕快照 2012-10-17 下午10.43.03   

 

Constranints 是 autolayout 的表示法,系统会依据他的设定,自动产生座标。

以这个案例来说,

第一个 Constranints 是指它的底部依据它的上层 View 的底部,加上固定距离。

第二个 Constranints 是指它的中央对齐它上层 View 的中央。

其他的依据这两个来产生,于是就有自动座标,不管是 3.5 吋的画面

 

萤幕快照 2012-10-17 下午10.57.45  

 

或四吋的 iPhone 5 

萤幕快照 2012-10-17 下午10.56.47  

 

更或者横过来

 

萤幕快照 2012-10-17 下午10.57.05  

 

座标都以上面两个 Constranints 来产生,而不再是固定座标。当然,Constranints 中有许多技巧需要做更进一步的说明,如优先权等,下次再做更进一步的说明。

如果想知道程式化手动建立 Constranints, 可以看这儿:手动建立Constransts 

 

相关文章