我有一个通过plist文件配置的应用程序,以支持纵向、横向左侧和横向右侧方向(即,UISupportedInterfaceOrientationPortrait、UIInterfaceOrientationLandscapeLeft和UIInterfaceOrientationLandscapeRight)。但我已经将支持的方向限制为仅在视图控制器内部纵向。如果我在视图控制器的视图上显示UIActionSheet,然后旋转设备,UIActionSheet将旋转到新的方向。这仅在运行iOS 8(GM Seed)的设备上发生。
我希望UIActionSheet遵循包含视图控制器的规则,而不是旋转。思想?
UIViewController示例代码:
- (IBAction)onTouch:(id)sender
{
UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle:@"hi"
delegate:nil
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Open", nil];
[actionSheet showInView:self.view];
}
#pragma mark - Rotation methods
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
被告知UIAlertController将取代iOS 8中的UIActionSheet。
“新的UIAlertController类取代UIActionSheet和UIAlertView类,成为在应用程序中显示警报的首选方式。”
https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html
UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"hi"
message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
[alertController addAction:[UIAlertAction actionWithTitle:@"Open"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
// open something
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel
handler:nil]];
[self presentViewController:alertController animated:YES completion:nil];
我在iOS 8上也遇到了类似的问题,如果您现在想继续使用UIAlertView和UIActionSheet,而不是迁移到UIAlertController,我找到了一个解决方法,这可能会有所帮助。
我的应用程序允许横向和纵向,但仅在选定视图上。大多数时候它只允许纵向。我希望UIAlertView和UIActionSheet仅显示纵向(因为它们所在的视图仅允许纵向)。
不幸的是,在iOS 8中,警报和操作表现在会旋转,而忽略了窗口根视图控制器的shouldAutorotate方法。即使警报旋转,警报下方的视图和状态栏仍保持纵向可见。如果警报接受输入,键盘也会保持纵向,因此它确实没有吸引力。
我正准备放弃,但最终找到了一些有效的东西,即使它并不理想。将此放在您的应用程序委托中,并根据需要进行调整。我期待更好的解决方案(可能只是使用新类)。这里的字符串比较显然是蹩脚的,这将覆盖您在I中设置为支持的方向的任何内容nfo.phtml" target="_blank">list.至少它是可以继续下去的东西...
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
NSString *viewControllerClassName = [NSString stringWithUTF8String:object_getClassName(window.rootViewController)];
if ([viewControllerClassName isEqualToString:@"_UIAlertShimPresentingViewController"]) {
return UIInterfaceOrientationMaskPortrait;
}
else {
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
}
在此处阅读有关此委托的更多信息:
https://developer.apple.com/library/prerelease/iOS/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/index.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:supportedInterfaceOrientationsForWindow:
以下是我基于Busrod解决方案的变通方法,但做了一些修改,因为我在UIActionSheet中使用他的变通方法时遇到了一些问题:
-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
UIViewController *presentedViewController = window.rootViewController.presentedViewController;
if (presentedViewController) {
if ([presentedViewController isKindOfClass:[UIActivityViewController class]] || [presentedViewController isKindOfClass:[UIAlertController class]]) {
return UIInterfaceOrientationMaskPortrait;
}
}
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
我想做的是: 由父视图控制器管理的父视图不应旋转。 由子视图控制器管理的子视图应该旋转到所有方向。 我所尝试的: 家长视图控制器 儿童视图控制器 Xcode部署信息中支持的方向设置为所有四个。 我得到的: 没有视图的旋转。如果将父视图的旋转设置为“全部”,则所有视图将一起旋转。所以要么全有要么全无。 更新 当我尝试放置UIDeviceOrientationIDChangeNotification的
我有一个ASP.NET Core2.1Web应用程序,它通过Web API接口为DevExpress报告提供服务。 谢谢斯文
动画控制器视图 动画控制器视图允许你创建、查看和修改动画控制器资源。 动画控制器视图显示了一个新的空动画控制器资源 动画控制器视图主要有两部分:网格布局主体区域,左侧的分层和参数面板。 动画控制器视图的布局区域 深灰色网格部分是主体布局区域。你可以在这里创建、排列和连接 动画控制器 的状态(即动画剪辑)。 可以在网格上右键点击创建一个新的状态节点。使用鼠标中键拖动,或拖动时按住 Alt/Optio
我正在编写一个具有多个视图的iOS应用程序。我已经将应用程序设置为使用基于ViewController的状态栏样式,这允许我使用以下代码 这就像预期的那样。 然后我将视图嵌入到导航控制器中,并将Barbuttonite与showSegue连接起来。此后,视图的ViewController切换为忽略样式设置,并显示默认的黑色状态栏。
我正在尝试将子视图控制器添加到父视图控制器,并让父视图控制器通知子视图控制器旋转事件。但是,旋转消息不会转发到子视图控制器(这是默认行为)。为什么没有发生这种默认行为? 环境:iOS 7、XCode 5、OSX 10.9 我正在按照Apple文档中的说明实现一个自定义容器视图控制器:“创建自定义容器视图控制器”。我试图建立一个简单的父子关系来转发旋转事件。总体层次结构与此处重新绘制的文档图14-1
以下的一段代码相当于定义一个ParameterizableViewController视图控制器的快捷方式,该控制器会立即将一个请求转发(forwards)给一个视图。请确保仅在以下情景下才使用这个类:当控制器除了将视图渲染到响应中外不需要执行任何逻辑时。 以下是一个例子,展示了如何在MVC Java编程配置方式下将所有"/"请求直接转发给名字为"home"的视图: @Configuration