如何适应iPhone 5的分辨率

本文介绍了如何通过使用Category和宏定义,为UI控件设置自适应大小的属性,以适应不同尺寸的iPhone5设备。通过判断设备型号并调整frame,实现了对不同屏幕尺寸的灵活响应。

每一个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(6401136),

  [[UIScreen mainScreencurrentMode].size))

return UIDeviceModelPhone5;

return UIDeviceModelPhone;

}

@end

/* auto resize method */

CGRect

UIAutoResizeToPhone5(CGRect rect)

{

if ([[UIDevice currentDevicedeviceModel] == UIDeviceModelPhone5)

rect.size.height += 88;

return rect;

}

CGRect

UIAutoPositionToPhone5(CGRect rect)

{

if ([[UIDevice currentDevicedeviceModel] == UIDeviceModelPhone5)

rect.origin.y += 88;

return rect;

}

在使用的地方,引入这个文件

someView.frame = AUTO_RESIZE_TO_IPHONE5(CGRectMake(00320480)); 

即可



写个宏定义

#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))];

 

希望有帮助。。。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值