如何适应iPhone 5的分辨率
2013-05-22 16:14
218 查看
每一个UI控件都有一个Aurosizing属性,有向上对齐,有向下对齐,也有向上和向下延伸。以上的这些属性设置好就能适应不同尺寸的界面
关键是区别设备的型号,然后使用不同的frame .我的做法是使用Category。 给UIDevice添加一个自动适配的方法
#define AUTO_RESIZE_TO_IPHONE5(r) UIAutoResizeToPhone5(r)
#define AUTO_POS_TO_IPHONE5(r) UIAutoPositionToPhone5(r)
typedef enum {
UIDeviceModelPhone,
UIDeviceModelPhone5,
UIDeviceModelPad,
} UIDeviceModelType;
@interface UIDevice (deviceModel)
- (UIDeviceModelType)deviceModel;
@end
CGRect
UIAutoResizeToPhone5(CGRect rect);
CGRect
UIAutoPositionToPhone5(CGRect rect);
在.m文件中 实现判断的方法
@implementation UIDevice (deviceModel)
- (UIDeviceModelType)deviceModel
{
if ([self userInterfaceIdiom] == UIUserInterfaceIdiomPad)
return UIDeviceModelPad;
if ([self userInterfaceIdiom] == UIUserInterfaceIdiomPhone &&
CGSizeEqualToSize(CGSizeMake(640, 1136),
[[UIScreen mainScreen] currentMode].size))
return UIDeviceModelPhone5;
return UIDeviceModelPhone;
}
@end
/* auto resize method */
CGRect
UIAutoResizeToPhone5(CGRect rect)
{
if ([[UIDevice currentDevice] deviceModel] == UIDeviceModelPhone5)
rect.size.height += 88;
return rect;
}
CGRect
UIAutoPositionToPhone5(CGRect rect)
{
if ([[UIDevice currentDevice] deviceModel] == UIDeviceModelPhone5)
rect.origin.y += 88;
return rect;
}
在使用的地方,引入这个文件
someView.frame = AUTO_RESIZE_TO_IPHONE5(CGRectMake(0, 0, 320, 480));
即可
写个宏定义
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
在需要改变坐标的地方这么写:
mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 86, 320, 264+(iPhone5 ? 88:0))];
希望有帮助。。。
关键是区别设备的型号,然后使用不同的frame .我的做法是使用Category。 给UIDevice添加一个自动适配的方法
#define AUTO_RESIZE_TO_IPHONE5(r) UIAutoResizeToPhone5(r)
#define AUTO_POS_TO_IPHONE5(r) UIAutoPositionToPhone5(r)
typedef enum {
UIDeviceModelPhone,
UIDeviceModelPhone5,
UIDeviceModelPad,
} UIDeviceModelType;
@interface UIDevice (deviceModel)
- (UIDeviceModelType)deviceModel;
@end
CGRect
UIAutoResizeToPhone5(CGRect rect);
CGRect
UIAutoPositionToPhone5(CGRect rect);
在.m文件中 实现判断的方法
@implementation UIDevice (deviceModel)
- (UIDeviceModelType)deviceModel
{
if ([self userInterfaceIdiom] == UIUserInterfaceIdiomPad)
return UIDeviceModelPad;
if ([self userInterfaceIdiom] == UIUserInterfaceIdiomPhone &&
CGSizeEqualToSize(CGSizeMake(640, 1136),
[[UIScreen mainScreen] currentMode].size))
return UIDeviceModelPhone5;
return UIDeviceModelPhone;
}
@end
/* auto resize method */
CGRect
UIAutoResizeToPhone5(CGRect rect)
{
if ([[UIDevice currentDevice] deviceModel] == UIDeviceModelPhone5)
rect.size.height += 88;
return rect;
}
CGRect
UIAutoPositionToPhone5(CGRect rect)
{
if ([[UIDevice currentDevice] deviceModel] == UIDeviceModelPhone5)
rect.origin.y += 88;
return rect;
}
在使用的地方,引入这个文件
someView.frame = AUTO_RESIZE_TO_IPHONE5(CGRectMake(0, 0, 320, 480));
即可
写个宏定义
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
在需要改变坐标的地方这么写:
mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 86, 320, 264+(iPhone5 ? 88:0))];
希望有帮助。。。
相关文章推荐
- iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?
- iOS 如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?
- 探究客户端浏览器分辨率的自适应问题(如何使网站脚本自动适应客户端分辨率)(3)
- Android布局layout如何适应不同的分辨率和不同大小的屏幕
- iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?
- iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?
- iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?
- iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?
- 如何使网页自适应电脑屏幕分辨率
- 如何适配新的iPhone 5分辨率
- 探究客户端浏览器分辨率的自适应问题(如何使网站脚本自动适应客户端分辨率)
- 如何让网页自适应分辨率
- iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?
- 如何使网页自适应电脑屏幕分辨率?
- web 页面如何动态适应不同的页面分辨率
- iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?
- 微信公众平台Java开发如何让网页自适应不同分辨率的手机浏
- 如何让android app适应不同分辨率
- APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸
- 如何让网页自适应电脑屏幕分辨率