我有一个应用程序,其中有两个UIWindow
实例的用例。第一个实例运行所有正常的应用程序交互,但我需要能够将视图控制器呈现在其他所有内容之上,无论用户在应用程序中执行什么操作,而无需用户交互。
我有第二个窗口正常工作并呈现良好状态。在这个视图控制器中,我只支持纵向模式(虽然应用程序的其他部分支持横向)。我试图在窗口rootViewController
中使用这些方法阻止轮换:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return [.Portrait]
}
override func shouldAutorotate() -> Bool {
return false
}
成功阻止设备旋转视图控制器,但它仍然允许状态栏旋转。我还想阻止状态栏旋转。我尝试将以下内容添加到AppDelegate
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
if let _ = window as? MyTopWindow {
return [.Portrait]
} else {
return .All
}
}
然而,这也没有奏效。状态栏仍然会旋转。
我已经看到了下面的问题,并试图实施解决方案,但它不适用于我的案例:Status bar rotates separated from UIWindow
修改
这是我创建UIWindow
的代码:
self.callManagementWindow = ActiveCallManagementWindow(frame: UIScreen.mainScreen().bounds)
self.callManagementWindow.rootViewController = primaryViewController
self.callManagementWindow.hidden = false
self.callManagementWindow.makeKeyAndVisible()
答案 0 :(得分:3)
前段时间我还遇到了两个窗口和旋转的问题,如果我没记错,你需要覆盖supportedInterfaceOrientations()
shouldAutorotate()
rootViewController
中的UIWindow
和enabledProtocols=TLSv1.2
作为第二个
答案 1 :(得分:1)
您可以在primaryViewController的viewDidAppear中尝试这个:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="40dp"
android:id="@+id/sample1"
android:text="Sample1"/>
<LinearLayout
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:id="@+id/insertat">
<TextView
android:layout_width="fill_parent"
android:layout_height="40dp"
android:text="Sample1"
android:id="@+id/sample3"/>
</LinearLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="40dp"
android:id="@+id/sample2"
android:text="Sample2"/>
</LinearLayout>
LinearLayout layout = (LinearLayout)findViewbyId(R.id.insertat);
mKeepPlayingButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
layout.setVisibility(View.visible);
}
});
答案 2 :(得分:0)