`

iphone 横屏

阅读更多
转载于 http://fei263.blog.163.com/blog/static/9279372420101111043247/

第一种:通过人为的办法改变view.transform的属性。

具体办法:

    view.transform一般是View的旋转,拉伸移动等属性,类似view.layer.transform,区别在于 View.transform是二维的,也就是使用仿射的办法通常就是带有前缀CGAffineTransform的类(可以到API文档里面搜索这个前 缀的所有类),而view.layer.transform可以在3D模式下面的变化,通常使用的都是前缀为CATransform3D的类。

    这里要记住一点,当你改变过一个view.transform属性或者view.layer.transform的时候需要恢复默认状态的话,记得先把他 们重置可以使用view.transform = CGAffineTransformIdentity,或者view.layer.transform = CATransform3DIdentity,假设你一直不断的改变一个view.transform的属性,而每次改变之前没有重置的话,你会发现后来 的改变和你想要的发生变化了,不是你真正想要的结果。

    好了,上面介绍了旋转的属性,接下来就是关键了。官方提供了一个办法就是查看当前电池条的状态UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;通过这个办法,你可以知道当前屏幕的电池条的显示方向,而且你还可以 强制设置他的显示方向,通过设置这个属性就OK了,可以选择是否动画改变电池条方向。有了这两个那我们就可以任意的改变我们想要的显示方式了。

1.获取当前电池条的方向UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation

2.获取当前屏幕的大小CGRect frame = [UIScreen mainScreen].applicationFrame;

3.设置我们的View的中心点
    CGPoint center = CGPointMake(frame.origin.x + ceil(frame.size.width/2), frame.origin.y + ceil(frame.size.height/2));

4.根据当前电池条的方向,获取需要旋转的角度的大小。通常

if (orientation == UIInterfaceOrientationLandscapeLeft) {
        return CGAffineTransformMakeRotation(M_PI*1.5);
    } else if (orientation == UIInterfaceOrientationLandscapeRight) {
        return CGAffineTransformMakeRotation(M_PI/2);
    } else if (orientation == UIInterfaceOrientationPortraitUpsideDown) {
        return CGAffineTransformMakeRotation(-M_PI);
    } else {
        return CGAffineTransformIdentity;
    }

5.可以动画的改变我们view的显示方式了
[[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationLandscapeRight animated:YES];

CGFloat duration = [UIApplication sharedApplication].statusBarOrientationAnimationDuration;(获取当前电池条动画改变的时间)
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:duration];

       //在这里设置view.transform需要匹配的旋转角度的大小就可以了。

        [UIView commitAnimations];

第二种:通过setOrientation:的办法强制性的旋转到一个特定的方向。

    注意:Apple在3.0以后都不支持这个办法了,这个办法已经成为了私有的了,但是要跳过App Stroe的审核,需要一点巧妙的办法。

    不要直接调用[[UIDevice currentDevice] setOrientation: UIInterfaceOrientationLandscapeRight]这样的办法来强制性的横屏,这样导致你的程序是很难通过App Store审核的。但是你可以选择使用performSelector的办法来调用它。具体就几行代码如下:

//强制横屏
    if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
        [[UIDevice currentDevice] performSelector:@selector(setOrientation:)
                                       withObject:(id)UIInterfaceOrientationLandscapeRight];
    }

    总结:如果第一种办法可以满足你需要的话,最好使用第一种办法,因为那个上 App Store肯定没问问题,但是第二种的话是需要冒风险的,但是如果你的结构太复杂了,导致使用第一种办法人为很难控制的话,可以尝试简单的使用第二种办 法。我在有米提供的sample里面就看到他使用了第二种简单的办法来显示横屏竖式的广告条。
分享到:
评论

相关推荐

    基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码

    其实主要是通过window....Andriod横屏$(“body”).attr(“class”, “landscape”);orientation = ‘landscape’;return false;}else if (window.orientation == 0 || window.orientation == 180) {//ipad、iphone

    javascript判断iphone/android手机横竖屏模式的函数

    iphone能很好的使用onorientationchange事件,但是android的onresize事件即使不旋转也会触发多次

    iDOS 2修改版,横屏和文件共享

    iPhone 上可用的Dospad,已修改,支持横屏和文件共享,需要自己用Xcode编译,有证书才能安装!

    iPhone6、6P适配Demo

    目前为止,iPhone屏幕尺寸已经有四种: 3.5(inch):1/3G/3GS/4/4S 4.0(inch):5/5S/5C 4.7(inch):6 5.5(inch):6Plus 看一下iPhone4~6(+)的屏幕高宽比: iPhone4(s):分辨率960*640,高宽比1.5 iPhone5(s)...

    iPhone X人机交互指南中文简版

    纵向,iPhone X显示屏的宽度与iPhone 6、iPhone 7和iPhone 8 4.7显示器的宽度相匹配。可是,iPhone X显示屏是比4.7”显示屏高145pt,导致content有大约20%额外的垂直空间。 纵向尺寸: 1125px × 2436px (375pt × ...

    iphone开发笔记

    横屏 3 状态栏高 3 导航栏、工具栏高 3 隐藏状态栏 3 横屏 3 屏幕变动检测 3 全屏 3 自动适应父视图大小: 3 定义按钮 3 设置视图背景图片 4 活动表单 4 警告视图 4 动画效果 4 图像、文本标签和详细文本标签 6 调整...

    windows mobile下的iphone 效果示例(参考codeproject)

    参考codeproject上c#版本的iphone ui in windows mobile做的,目前还不支持横屏,支持240*320的屏幕,wm6.0以上版本,可能程序还存在一些小bug,未经过太多严格测试。希望大家多多指教!

    iphone 5.1.1 状态栏

    5.1.1系统状态栏 包括 心型信号图标、彩色铅笔无线信号、3G网络信号、小希横屏锁定、彩色数字电量百分比、花朵电池、粉色屏幕锁头 安装位置//System/Library/Frameworks/UIKit.framework

    基于Xcode4开发第一个iPhone程序:“HelloWorld”

    写一个iPhone程序,在屏幕正中显示文字“HelloWord”,粗体,字体大小26磅,字体...iPhone支持四个方向的旋转的,横屏和竖屏表现略有差异,因为项目需求要求支持屏幕旋转,所以针对横屏和竖屏,界面表现有所差异,简单

    javascript实现根据iphone屏幕方向调用不同样式表的方法

    本文实例讲述了javascript实现根据iphone屏幕方向调用不同样式表的方法。分享给大家供大家参考。具体如下: 当iphone屏幕旋转式,这段JS代码可以动态调用不同的样式来适应屏幕变换 [removed] function orient() { ...

    iOS设备检测及iPhone数字键盘添加完成按钮工程代码

    根据网上资源扩展UIDevice类,完善增加设备检测函数;修改网上提供的给iPhone 数字键盘添加客制化按钮代码,使其兼容横竖屏,及iPad和iPhone。

    ios-超强自定义tabBar (修复iPhone X 适配问题).zip

    ⊙ 修复iPhone X 适配问题 ⊙ 性能优化 ⊙ 支持自定义tabBar动画 ⊙ 支持自定义tabBar样式 ⊙ 支持自定义badgeValue动画 ⊙ 支持自定义badgeValue样式 ⊙ 完美支持横竖屏 ⊙ 支持CocoaPods 更多说明请移步...

    jquery图片旋转插件制作触屏手机360度旋转图片展示

    360度旋转图片展示jquery插件UIMIX.fullview是一款功能非常强大的图片360度旋转特效,是浏览VIVO智能手机官方网站时整理出来的,使用的时候只要准备好要展示的图片和设置好参数就好,image_count是图片的数量,除了...

    Html5适配iphoneX刘海屏的简单实现

    iphonex的刘海屏且不说好看不好看,但是确实给开发造成一定困扰,有些PM希望产品能够全屏展示,于是客户端就把刘海以上的空间让出来让前端处理,造成一个问题就是当页面头部固定在顶部时,如果上下滑动页面会有较大...

    PP装机助手v1.0 For iPhone 支持iOS6

    中国最流行的iPhone/iPad下载安装应用软件——PP...实现重力感应支持横屏,让iPad用户想怎么摆弄就怎么摆弄,只要你喜欢。 AppStore正版资源下载 PP装机助手融合了破解版应用下载,更可链接AppStore直接下载正版资源。

    苹果iPhone APP iOS开发之webkit教程.zip

    iOS 浏览器横屏时会重置字体大小的问题 webkit内核中一些私有的meta标签 关闭iOS中键盘自动大写、自动更正、自动完成 其他CSS的杂项 其他js杂项 添加初始化图片 文件上传, 从相机捕获媒体 电话短信 移除 iOS 默认的...

    cocos2x-adaptation:cocos2dx 横版各种适配 iphoneX适配 齐刘海 凹凸屏

    cocos2dx 适配 横版 iphoneX适配 iphoneX适配 apple官方参考: 使用的是cocos2dx 3.13版本以上,其他版本可以依照找个流程修改。 1.修改RootViewController.mm 增加ios11的新回调方法 - (void)...

Global site tag (gtag.js) - Google Analytics