ios5和ios6横竖屏支持及ipad和iphone设备的判断
判断是ipad还是iphone设备。此定义在PayViewControllerDemo-Prefix.pch
定义如下:
#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define iPhone UIUserInterfaceIdiomPhone
#define iPad UIUserInterfaceIdiomPad
// ios5下的横屏需要调用的函数
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
ios5可以在每一个视图中取控制视图的方向,以及当视图切换不同方向时,去控制其子视图的布局,具体可以参照下列方式。
//界面视图里面有UIImageView和UIButton空间,当横竖屏时,坐标的改变。
@interfaceViewController ()
{
PayViewController *payview;
UIImageView *drawViewipad;
UIImageView *drawViewihone;
UIButton *consumeBtnipone;
UIButton *consumeBtnipd;
}
//6.0之前
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
if (isPad == iPad)
{
drawViewipad.frame = CGRectMake(306, 150, 412, 120);
consumeBtnipd.frame = CGRectMake(1024/2-280/2, 550, 280, 50);
}
else if (isPad == iPhone)
{
drawViewihone.frame = CGRectMake(155, 50, 170, 60);
consumeBtnipone.frame = CGRectMake(170, 200, 140, 40);
}
}
if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
if (isPad == iPad)
{
drawViewipad.frame = CGRectMake(200, 150, 412, 120);
consumeBtnipd.frame = CGRectMake(768/2-280/2, 550, 280, 50);
}
else if (isPad == iPhone)
{
drawViewihone.frame = CGRectMake(85, 50, 170, 60);
consumeBtnipone.frame = CGRectMake(90, 200, 140, 40);
}
}
returnYES;
}
// ios6下的横屏需要调用的函数
-(BOOL)shouldAutorotate {
return YES;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;//支持4各方向的旋转。
}
然后在plist文件里面找到Supported interface orientations 选项,添加你想支持的方向,都有提示的。
设置这个选项需要和代码一直,否则会出问题。
接着看如何控制每一个界面的方向及在不同方向界面的布局,由于ios6不能单独控制每一个界面的方向,所以需要由主viewcontroller来设置界面的控制,如果你有navgation,那么需要定义一个navgation的类,然后在此类中定义控制子viewcontroller的代码,如下:
//ios6之后需要在top-most controller中来控制方向问题。
-(BOOL)shouldAutorotate
{
return [self.viewControllers.lastObjectshouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [self.viewControllers.lastObjectsupportedInterfaceOrientations];
}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.viewControllers.lastObjectpreferredInterfaceOrientationForPresentation];
}
如果没有navgation,那么就需要在appdelegate中去设置这段代码。
接着可以在任何子viewcontroller中来控制不同方向的view布局,可以参考子viewcontroller的代码布局,如下:
//ios6之后需要在top-most controller中来控制方向问题。
- (BOOL)shouldAutorotate
{
returnYES;
}
- (NSUInteger)supportedInterfaceOrientations
{
//判断系统的版本是6.0以上的。
if ([[UIDevicecurrentDevice]systemVersion].floatValue >= 6.0)
{
//判断设备当前的方向,然后重新布局不同方向的操作。
UIInterfaceOrientation currentOrientation = [[UIApplicationsharedApplication] statusBarOrientation];
if (currentOrientation == UIInterfaceOrientationPortrait || currentOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
if (isPad == iPad)
{
drawViewipad.frame = CGRectMake(200, 150, 412, 120);
consumeBtnipd.frame = CGRectMake(768/2-280/2, 550, 280, 50);
}
else if (isPad == iPhone)
{
drawViewihone.frame = CGRectMake(85, 50, 170, 60);
consumeBtnipone.frame = CGRectMake(90, 200, 140, 40);
}
}
if (currentOrientation == UIInterfaceOrientationLandscapeLeft || currentOrientation == UIInterfaceOrientationLandscapeRight)
{
if (isPad == iPad)
{
drawViewipad.frame = CGRectMake(306, 150, 412, 120);
consumeBtnipd.frame = CGRectMake(1024/2-280/2, 550, 280, 50);
}
else if (isPad == iPhone)
{
drawViewihone.frame = CGRectMake(155, 50, 170, 60);
consumeBtnipone.frame = CGRectMake(170, 200, 140, 40);
}
}
}
returnUIInterfaceOrientationMaskAll;
}
这样就能控制不同方向的任何操作和界面布局了。
ios5和ios6横竖屏支持及ipad和iphone设备的判断的更多相关文章
- iOS5 and iOS6都只支持横屏的方法
If your app uses a UINavigationController, then you should subclass it and set the class in IB. You ...
- Android 横竖屏+碎片的应用
最终效果展示: 项目介绍: 通过碎片的方式显示标题列表和内容,其中也牵涉到横竖屏的知识 项目代码下载:http://files.cnblogs.com/files/Laopengblog/%E7%A2 ...
- Activity 横竖屏切换
前言 在开发中常要处理横竖屏切换,怎么处理先看生命周期 申明 Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函 ...
- Android应用:横竖屏切换总结
眨眼间,已经到了2016你年春节前,离上一篇博客的时间已经有6个月多,回想起这半年的种种,不得不说,学习和工作实在是太忙了,或许这就是程序员的真实写照吧. 写博客之初,主要的目的还是为了把自己的学习痕 ...
- js判断手机的横竖屏调整样式
在移动端,我们经常遇到横竖屏的问题,所以我们改如何判断或针对横竖屏来写代码呢.首先需要在head中加入如下代码: <meta name="viewport" content= ...
- iOS开发UI篇—iPad和iPhone开发的比较
一.iPad简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2.iPad的市场情况 ...
- 【转】iOS开发UI篇—iPad和iPhone开发的比较
原文网址:http://www.cnblogs.com/wendingding/p/3918007.html iOS开发UI篇—iPad和iPhone开发的比较 一.iPad简介 1.什么是iPad ...
- iPad和iPhone开发的比较
一.iPad简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2.iPad的市场情况 ...
- iPad和iPhone开发的异同
niPad和iPhone开发的异同 niPad简介 n什么是iPad p一款苹果公司于2010年发布的平板电脑 p定位介于苹果的智能手机iPhone和笔记本电脑产品之间 p跟iPhone一样,搭载 ...
随机推荐
- 不定义JQuery插件,不要说会JQuery[转载]
http://www.cnblogs.com/xcj26/p/3345556.html 不定义JQuery插件,不要说会JQuery 一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页 ...
- 虚拟机下opensips 启动
先启动MYSQL mysql:service mysqld start 然后启动RTP代理 rtpproxy -l 192.168.6.199 -s udp:192.168.6.199:7890 -F ...
- Samsung K9F1G08U0D SLC NAND FLASH简介(待整理)
Samsung K9F1G08U0D,数据存储容量为128M,采用块页式存储管理.8个I/O引脚充当数据.地址.命令的复用端口.详细:http://www.linux-mtd.infradead.o ...
- 新生赛(2) problem 2 丁磊养猪
Problem B Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
- uploadify按钮中文乱码问题
uploadify是一款基于jQuery库的上传插件,但很可惜的是无论你怎么设置参数buttonText ,它的中文按钮都会出现乱码的情况,现把出现原因及解决方法总结如下. 那么出现这种的 ...
- O the joy of having nothing / 아무것도 갖지않고
Chords: C G Am Em F C Dm G C G Am Em F C Am Dm G English - O the joy of having nothing and being not ...
- Android的Activity屏幕切换滑动动画
Activity的切换效果使用的是Android的动画效果,Android的动画在官方有相关资料:http://developer.android.com/guide/topics/graphics/ ...
- oracle取分组的前N条数据
select * from(select animal,age,id, row_number()over(partition by animal order by age desc) row_num ...
- Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语 ...
- jquery 项目所用
<script> $(document).ready(function(){ $.ajax({ type:'post', url :'interface.ajax.php', data:{ ...