这是一种在iOS设备方向发生变化时运行方法的方法吗?
我想只更改屏幕上的某些对象方向,而不是其他方向。
我使用哪些代表等。
干杯 - 一个新手
答案 0 :(得分:32)
取决于您想要做出反应:
如果在轮播之前,覆盖来自UIViewController:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
// do something before rotation
}
如果您想在轮换后执行某些操作:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
// do something after rotation
}
<强>参考:强>
答案 1 :(得分:6)
UIDevice
个帖子UIDeviceOrientationDidChangeNotification
UIApplication
发布了UIApplicationWillChangeStatusBarOrientationNotification
和UIApplicationDidChangeStatusBarOrientationNotification
,并为每个帖子提供了相关的委托回调。
UIViewController
会收到由UIDevice通知触发的多个与方向相关的调用。
如果您已经在使用UIViewController,请实现一些与方向相关的方法,否则请注册UIDevice通知。最重要的UIViewController方法是shouldAutorotateToInterfaceOrientation
,因为如果返回NO
,则不会调用其他方法。
答案 2 :(得分:0)
willRotateToInterfaceOrientation:是您可能正在查看的方法。阅读那篇文章。
答案 3 :(得分:0)
UIViewController
在轮换前发送willRotateToInterfaceOrientation:duration:
,在轮换后发送didRotateFromInterfaceOrientation:
。
要配置其他动画,请使用willAnimateRotationToInterfaceOrientation:duration:
或willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:
,didAnimateFirstHalfOfRotationToInterfaceOrientation:
和willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:
。后者用于两步动画,当您有关于主过渡动画的屏幕外或页脚视图时,通常会使用这些动画。
答案 4 :(得分:0)
我的沙盒应用: https://github.com/comonitos/programatical_device_orientation
解决方案很简单:
接口(h文件)中的:
BOOL rotated;
实现中的(m文件):
重写
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 返回旋转; }
2调用[自我设置]
-(void) setup
{
rotated = YES;
[[UIDevice currentDevice] setOrientation:UIDeviceOrientationLandscapeLeft];
rotated = NO;
}
答案 5 :(得分:0)
只需使用此代码段检查方向更改。
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.currentDevice().orientation.isLandscape.boolValue {
print("Landscape")
} else {
print("Portrait")
}
}