如何选择retina和univeral?

本文介绍了一种在iOS应用开发中使用一套高清资源文件,通过判断设备类型和分辨率来实现不同设备(如iPhone和iPad)上的适配方法。文中详细讲解了如何通过代码检查iOS版本及设备分辨率,并提供了图片缩放的实现方案。

转自:http://www.cocoachina.com/bbs/read.php?tid=46237


我需要程序支持iPad和iPhone,如果选择Univeral,那么我就要准备两套图(低分和高分),如果是tetina,那也是两套,不过是否有可能告诉苹果这个游戏只支持iPhone4/3GS等大容量内存的,而不支持3G/Touch 2等小内存老机器,因为这样我就可以只用一套HD图,靠缩放来解决分辨率的问题。


我们的项目就是只有一套高清图。
做法是在appDelegate初始化的时候,首先用这句判断一下ios版本:
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2f)
因为下面判断分辨率的语句,在3.2以下不支持,而3.2以下的分辨率肯定是320x480.所以在else里可以直接控制缩放参数为0.5.
然后如果版本大于等于3.2,用这句得到分辨率:
CGSize wndSize = [[UIScreen mainScreen] currentMode].size;
然后就可以根据得到的分辨率判断是否retina的iphone,或者是ipad,设置缩放参数。

你也可以用[[UIDevice currentDevice] model]来得到设备的名称,但我觉得还要分辨是ipad或者ipad simulator等等好麻烦,还不如用分辨率。

注意,我遇到一个情况,因为我们的项目是横屏的,用[[UIScreen mainScreen] currentMode].size得到的宽和高,ipad模拟器和真机是相反的,所以如果判断分辨率的话,要考虑到两种情况才能让模拟器和真机都画对。


图片缩放到指定大小尺寸

- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{  
    // 创建一个bitmap的context  
    // 并把它设置成为当前正在使用的context  
    UIGraphicsBeginImageContext(size);  
    // 绘制改变大小的图片  
    [img drawInRect:CGRectMake(0, 0, size.width, size.height)];  
    // 从当前context中创建一个改变大小后的图片  
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();  
    // 使当前的context出堆栈  
    UIGraphicsEndImageContext();  
    // 返回新的改变大小后的图片  
    return scaledImage;  
}



在工业自动化领域,S7-200 PLC通过网络通讯实现设备间的高效互联,USS协议Modbus协议是实现这一功能的关键技术。为了深入了解如何在S7-200 PLC中利用这些协议进行数据交换,建议您查阅《西门子S7-200 PLC开发全指南:从入门到高级应用》。这本手册详细介绍了S7-200 PLC的指令集、网络通讯以及故障诊断等多个方面,对于网络通讯部分,手册会提供从基础到高级的应用指南。 参考资源链接:[西门子S7-200 PLC开发全指南:从入门到高级应用](https://wenku.youkuaiyun.com/doc/fe584f6ias) 首先,USS协议(Univeral Serial Bus Protocol)是西门子专用的串行通信协议,主要用于西门子变频器与其他设备如PLC之间的通讯。利用USS协议进行数据交换,需要设置特定的通信参数帧格式,确保通讯双方能够正确解析数据。在S7-200 PLC中,可以通过编写相应程序来配置发送USS控制字数据字,以及接收响应信息。 接着,Modbus协议是一种广泛应用于工业控制领域的开放通信标准,它支持多种物理层通信协议,包括RS232、RS485等。在S7-200 PLC中实现Modbus通讯,首先要确定通讯的波特率、数据位、停止位奇偶校验等参数。通过编程,可以设置PLC作为Modbus主站或从站,并根据Modbus协议规定的数据结构发送接收数据。 在实际应用中,您可能需要编写程序来初始化通信参数,发送查询命令,接收从站返回的数据,并进行相应的错误处理。例如,在使用Modbus RTU模式下,您可以通过编写特定的S7指令来实现数据的读取写入。 这本手册提供的示例步骤将帮助您构建一个稳定的通信环境,实现S7-200 PLC与其他设备的数据交换远程监控。掌握这些技能后,您将能够更高效地利用S7-200 PLC进行复杂的控制任务。 最后,为了进一步深化对PLC网络通讯功能的理解应用,您可以继续参考手册中的高级应用部分,这部分内容将涵盖更多实际操作案例故障诊断技巧,帮助您全面提升在工业自动化领域的技术能力。 参考资源链接:[西门子S7-200 PLC开发全指南:从入门到高级应用](https://wenku.youkuaiyun.com/doc/fe584f6ias)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值