转载于 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里面就看到他使用了第二种简单的办法来显示横屏竖式的广告条。
分享到:
相关推荐
【描述】提到的“这是做axure的时候可以用的iPhone各种界面”,说明这是一组适用于Axure RP的组件库,包含了各种iPhone横屏状态下的用户界面元素,如屏幕框架、按钮、输入框、导航栏、工具栏等。Axure RP是一款流行...
例如,如果你有一个背景图片,希望在iPhone横屏和iPad上使用高清大图,在iPhone竖屏上使用小图,可以在Asset Catalogs中创建一个Image Set,然后为每个Size Class(w Compact/h Regular,w Regular/h Compact,w ...
在iOS开发中,有时我们需要特定的UIViewController在显示时强制处于横屏模式,特别是在展示全屏媒体内容或游戏等场景下。本篇文章将深入探讨如何在iOS应用中实现"强制子ViewController为横屏"的需求,同时确保父...
iOS支持两种主要的屏幕方向:Portrait(竖屏)和Landscape(横屏),其中又分为Left和Right,分别对应横屏时屏幕的左边缘或右边缘朝上。在开发中,我们通常通过两种方式来控制这些方向: 1. **Info.plist配置**: ...
Size Classes则是用来处理不同屏幕方向和设备尺寸的工具,确保界面在横屏和竖屏以及不同设备之间都能正确显示。 为了实现对iPhone 8的屏幕兼容,开发者需要: 1. 使用Auto Layout设置约束:通过设置视图之间的相对...
通过配置不同的Size Classes,可以为不同的设备类型(如iPhone横屏、iPhone竖屏、iPad横屏和iPad竖屏)设置不同的布局。 然而,从iOS 8开始,苹果引入了 Adaptive UI,它包含Launch Screens 和 Trait Collections。...
其实主要是通过window....Andriod横屏$(“body”).attr(“class”, “landscape”);orientation = ‘landscape’;return false;}else if (window.orientation == 0 || window.orientation == 180) {//ipad、iphone
例如,iPhone横屏和竖屏会分别对应不同的Size Classes,而iPad通常只使用一种Size Class(在横屏和竖屏时都是Regular)。 其次,Auto Layout的Constraints在iOS8中变得更加智能和易用。开发者可以通过Visual Format...
// iPad、iPhone横屏;Android竖屏 $("body").attr("class", "portrait"); orientation = 'portrait'; return false; } } ``` 在这个jQuery示例中,`orient`函数不仅检测横竖屏状态,还根据结果改变`body`元素...
例如,对于一个只在iPhone横屏显示的元素,可以在Compact Width和Regular Height的Size Class下设置其约束。 在"Demo2"这个项目中,你可以看到如何实际操作这些概念。打开Storyboard文件,你将发现视图控制器的View...
在iOS开发中,设备的横竖屏适配是一...在iOS中,屏幕方向由`UIInterfaceOrientation`枚举类型表示,包括四种主要方向:`UIInterfaceOrientationPortrait`(正向)、`UIInterfaceOrientationLandscapeLeft`(左横屏)、`...
然后,`supportedInterfaceOrientations`方法决定了视图控制器支持哪些屏幕方向,例如Portrait(竖屏)、LandscapeLeft(左横屏)和LandscapeRight(右横屏)。 在iOS 5中,如果需要对特定的视图控制器进行横竖屏...
iOS系统提供了两种基本的屏幕方向:portrait(竖屏)和landscape(横屏)。每个应用都有一个或多个界面,这些界面可能需要根据设备的物理方向来动态调整布局。在iOS中,我们主要通过以下几种方式来处理屏幕方向的...
例如,iPhone横屏(Regular Regular)和iPhone竖屏(Compact Regular)属于不同的尺寸类,iPad则通常为Regular Regular。通过选择不同的尺寸类,开发者可以在同一Storyboard中为不同设备和方向设计界面。例如,你...
6. **iPhone-Horizontal.rplib**:此库可能包含适用于iPhone横屏模式的组件,比如游戏或视频播放应用的布局。 7. **axure_metro_controllers.rplib**:这个库可能提供了Windows Metro风格的控制器组件,如导航栏、...
在iOS开发中,确保应用程序在不同尺寸的iPhone设备上,如iPhone 4和iPhone 5,都能正确且适当地显示是非常关键的。由于这两款设备的屏幕尺寸和分辨率存在差异,开发者需要采取一定的策略来实现屏幕兼容性。以下是...
iPhone的`window.orientation`属性可以返回设备的当前方向,它的值可以是0、90、-90或180,分别代表了直立的竖屏、顺时针旋转90度的横屏、逆时针旋转90度的横屏和倒置的竖屏。因此,通过监听`onorientationchange`...
- **Size Classes**: iOS引入了Size Classes,允许开发者针对不同的屏幕尺寸(如iPhone竖屏、iPhone横屏、iPad)定义独立的布局。 - **Auto Resizing**: 虽然Autolayout更强大,但旧的Auto Resizing Mask机制仍然...
《iDOS 2修改版:开启横屏与文件共享的Dospad探索》 在移动设备上体验经典的DOS操作系统一直是许多用户的怀旧之选,而iDOS 2修改版则是专为iPhone用户打造的一款独特应用。这款经过精心调整的Dospad版本,不仅保留...