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设备的判断的更多相关文章

  1. iOS5 and iOS6都只支持横屏的方法

    If your app uses a UINavigationController, then you should subclass it and set the class in IB. You ...

  2. Android 横竖屏+碎片的应用

    最终效果展示: 项目介绍: 通过碎片的方式显示标题列表和内容,其中也牵涉到横竖屏的知识 项目代码下载:http://files.cnblogs.com/files/Laopengblog/%E7%A2 ...

  3. Activity 横竖屏切换

    前言 在开发中常要处理横竖屏切换,怎么处理先看生命周期 申明 Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函 ...

  4. Android应用:横竖屏切换总结

    眨眼间,已经到了2016你年春节前,离上一篇博客的时间已经有6个月多,回想起这半年的种种,不得不说,学习和工作实在是太忙了,或许这就是程序员的真实写照吧. 写博客之初,主要的目的还是为了把自己的学习痕 ...

  5. js判断手机的横竖屏调整样式

    在移动端,我们经常遇到横竖屏的问题,所以我们改如何判断或针对横竖屏来写代码呢.首先需要在head中加入如下代码: <meta name="viewport" content= ...

  6. iOS开发UI篇—iPad和iPhone开发的比较

    一.iPad简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2.iPad的市场情况 ...

  7. 【转】iOS开发UI篇—iPad和iPhone开发的比较

    原文网址:http://www.cnblogs.com/wendingding/p/3918007.html iOS开发UI篇—iPad和iPhone开发的比较 一.iPad简介 1.什么是iPad ...

  8. iPad和iPhone开发的比较

    一.iPad简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2.iPad的市场情况 ...

  9. iPad和iPhone开发的异同

    niPad和iPhone开发的异同   niPad简介 n什么是iPad p一款苹果公司于2010年发布的平板电脑 p定位介于苹果的智能手机iPhone和笔记本电脑产品之间 p跟iPhone一样,搭载 ...

随机推荐

  1. log4net 使用与配置 每天一份log文件

    1.下载 或 在nuget安装 log4net 2. web.config (app.config) <configuration> <configSections> < ...

  2. uva 714 - Copying Books(贪心 最大值最小化 二分)

    题目描写叙述开头一大堆屁话,我还细致看了半天..事实上就最后2句管用.意思就是给出n本书然后要分成k份,每份总页数的最大值要最小.问你分配方案,假设最小值同样情况下有多种分配方案,输出前面份数小的,就 ...

  3. 力挺8天入门wpf【转载】

    8天入门wpf—— 第八天 最后的补充 摘要: 从这一篇往前看,其实wpf中还有很多东西没有讲到,不过我的原则还是将比较常用的知识点过一遍,如果大家熟悉了这些知识,基本功也就打的差不多了,后续可以等待 ...

  4. Android应用程序与SurfaceFlinger服务的连接过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7857163 前文在描述Android应用程序和 ...

  5. NFS(网络文件系统的搭建)

    关于NFS的原理,我在这就不概诉了,其实非常简答的理解就是一个网络磁盘,你需要把它挂载到你的磁盘上使用而已.那接下来谈谈如和搭建NFS网络文件系统. 需要使用2台机器作此实验,我分别配置IP为192. ...

  6. 64bit ubuntu14.04编译PlatinumKit出现的arm-linux-androideabi-g++: not found错误解决方法

    编译命令:scons target=arm-android-linux build_config=Release 出现错误: scons: Reading SConscript files ...** ...

  7. dojo.byId、dojo.query、dojo.attr

    概述: dojo.byId(/*string*/id或/*DomNode*/node) 1.传入DOMNode返回传入的domNode; 2.传入id返回id为当前值的domNode dojo.que ...

  8. DataGridView显示行号

    //可以在DataGirdView的RowPostPaint事件中进行绘制. //如:添加以下方法代码 private void DrawRowIndex(object sender, DataGri ...

  9. spring的IOC,DI及案例详解

    一:spring的基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Sp ...

  10. javascript中with语句应用

    语法格式: with(obj){} obj指明了语句组中对象缺省时的参考对象,就是代表该语句块中的默认作用域为obj. <html> <head> <title>& ...