适配4inch(未完)

1. 项目中加个1136*640的启动页面图片,命名 [email protected]

2. ios模拟器硬件->设备->iPhone(Retina 4-inch)

3. 动态更改控件布局和高度[UIScreen mainScreen].bounds.size.height


代码中不要写320和480什么的初始化座标,要用屏幕高度和宽度初始化


#define Screen_height   [[UIScreen mainScreen] bounds].size.height
#define Screen_width    [[UIScreen mainScreen] bounds].size.width

CGRect screenBounds = [ [UIScreenmainScreen]bounds];

screenBounds.origin.y = 0

screenBounds.size.height = 480

CGRect viewFrame = [[UIScreenmainScreen]applicationFrame];

viewFrame.origin.y = 20

viewFrame.size.height = 460


例如:
如果想实现一个UILabel控件始终位于:距离屏幕下边缘140高的位置,则不能这样写:
    lblMsg = [[UILabel alloc] initWithFrame:CGRectMake(150,  320, 150, 30)];
这样是不行的,因为它的Y值已经固定了,所以它的位置不会随屏幕的拉伸而改变。如果在4寸屏的时候,它就会位于屏幕中间的位置了,而不是下方。


解决办法:可以使用
    lblMsg = [[UILabel alloc] initWithFrame:CGRectMake(150,  [UIScreen mainScreen].bounds.size.height - 140, 150, 30)];
这种情况下,UILabel的Y值是相对于屏幕尺寸而变化的,所以就实现了在3.5寸屏和4寸屏下,始终都位于距离屏幕底部 140高的位置上。 


修改程序界面,应尽量获取当前屏幕的size,而不是写死的值(尽量不要写死480,而根据当前屏幕[UIScreen mainScreen].bounds)选择能在分辨率改变时省去不少麻烦
判断设备是不是iPhone 5 iPod 5
#define IS_IPHONE_5 (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568)<DBL_EPSILON) 


同样,对于控件的高度等,也是需要相对定位的,不能写死。这样就实现了兼容


stackoverflow上代码,如何判断iphone 5

[html] view plaincopy
  1. #define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )  

如果要兼任ipad

[html] view plaincopy
  1. <p class="p1">#define IS_WIDESCREEN ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )<span class="s1">568</span> ) < DBL_EPSILON )</p><p class="p1">#define IS_IPHONE ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @<span class="s2">"iPhone"</span> ] )</p><p class="p1">#define IS_IPHONE_SIMULATOR ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @<span class="s2">"iPhone Simulator"</span> ] )</p><p class="p1">#define IS_IPOD   ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @<span class="s2">"iPod touch"</span> ] )</p><p class="p1">#define IS_IPHONE_5 ( ((IS_IPHONE) || (IS_IPHONE_SIMULATOR)) && IS_WIDESCREEN )</p>  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章