我有photoBroser
继承uiview
:
@interface SDPhotoBrowser : UIView <UIScrollViewDelegate>
但现在我要求photoBroser
支持iphone
纵向和横向,以及如何做到这一点?
编辑:在我的应用程序中,我的应用仅支持portrait
方向,仅限于photoBrowser
uiview
,我想支持portrait and landscape
方向。
编辑:我应用J.Hunter
的答案,他的答案非常好,在实际编码中,我建议更改portrait and landscape orientation
的功能。当我解雇我的photoBrowser
时,有一个问题,在photoBrowser
解雇后,该设备已经landscape orientation
,因此我使用下面的代码让我的设备portrait orientation
,然后我的photoBrowser
解雇,所以有合理的表现。
//(force landscape:[self interfaceOrientation:UIInterfaceOrientationLandscapeRight];)
//(force Portrait:[self interfaceOrientation:UIInterfaceOrientationPortrait];)
+ (void)interfaceOrientation:(UIInterfaceOrientation)orientation
{
if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
SEL selector = NSSelectorFromString(@"setOrientation:");
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
[invocation setSelector:selector];
[invocation setTarget:[UIDevice currentDevice]];
int val = orientation;
// from 2
[invocation setArgument:&val atIndex:2];
[invocation invoke];
}
}
此功能可能对代码中的完美support portrait and landscape orientation
有用。
答案 0 :(得分:1)
现在我知道您的应用仅支持纵向方向。在特殊视图控制器中,您需要两步支持纵向和横向
我想你使用的是Objective-C
1.在名为AppDelegate.h
的{{1}}中添加一个属性
2.在“AppDelegate.m”中,实现@property (nonatomic, assign) BOOL shouldRotation;
- UIApplicationDelegate
的定位方法,就像
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window
现在,您可以在任何想要的UIViewController中支持横向。
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if (self.shouldRotation) {
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;
}
else {
return UIInterfaceOrientationMaskPortrait;
}
}
愿它有所帮助。
PS,还有另一种方法可以解决它:
- (void)viewDidLoad {
[super viewDidLoad];
// enable landscape orientation
[UIApplication sharedApplication].delegate.shouldRoration = YES;
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
// disable landscape orientation
[UIApplication sharedApplication].delegate.shouldRoration = NO;
}
,返回- (UIInterfaceOrientationMask)supportedInterfaceOrientations
或UIInterfaceOrientationMaskPortrait