当前位置: 首页 > 知识库问答 >
问题:

当我旋转设备并单击选项卡项时,打开的页面的视图保持横向模式

洪雨石
2023-03-14

有人能帮忙吗?我的设备支持竖屏。但是只有一个视图控制器可以使用横向模式。当我打开支持横向模式的视图控制器并单击tabBar项目时,设备返回竖屏,但视图仍处于横向模式。

以下是我的appDelegate代码:

   //Orientation Variables
    var myOrientation: UIInterfaceOrientationMask = .portrait

   
    var orientationLock = UIInterfaceOrientationMask.portrait
    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        return self.orientationLock
       
    }

    struct AppUtility {
      static func lockOrientation(_ orientation: UIInterfaceOrientationMask) {
        if let delegate = UIApplication.shared.delegate as? AppDelegate {
          delegate.orientationLock = orientation
        }
      }

      static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) {
        self.lockOrientation(orientation)
        UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation")
      }
    }

这是我的支持横向的ViewController:

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        AppDelegate.AppUtility.lockOrientation(.allButUpsideDown)
       
    }

我还有右导航栏按钮。当用户点击按钮时,屏幕会转动,我有两个旋转功能

//MARK: Rotate Device to right
    func rotateToLandsScapeDevice(){
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.orientationLock = .landscapeRight;
        appDelegate.orientationLock = .allButUpsideDown;
        UIDevice.current.setValue(UIInterfaceOrientation.landscapeRight.rawValue, forKey: "orientation")
        UIView.setAnimationsEnabled(true)
        buttonClicked = false
    }


    //MARK: Rotate Device to portrait
    func rotateToPotraitScapeDevice(){
        
      let appDelegate = UIApplication.shared.delegate as! AppDelegate
        
        appDelegate.orientationLock = .portrait;
        UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
        UIView.setAnimationsEnabled(true)
        
        buttonClicked = true
    }

当视图消失时,我转到纵向模式:

 override func viewWillDisappear(_ animated: Bool) {
      super.viewWillDisappear(animated)

       AppDelegate.AppUtility.lockOrientation(.portrait)
        
        UIView.setAnimationsEnabled(true)
        
    
    }

当我单击“上一步”时,旋转效果很好,它会旋转纵向模式。但当我单击tabbar项视图时,它是这样的:

共有1个答案

徐昊焜
2023-03-14

在我的TabBarController类中,我检测用户何时单击项目。然后我更改设备旋转。

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
          
          appDelegate.orientationLock = .portrait;
          UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
          UIView.setAnimationsEnabled(true)
    }
 类似资料:
  • 在html中,当创建选项卡时,我可以将Paris选项卡设置为活动的(在html中用“style=”display:block;“硬编码)。因此,当页面加载时,活动选项卡(Paris)将显示。 问题 当我点击不同的标签(伦敦)并点击刷新,它再次显示巴黎。我如何才能点击刷新并显示当前活动的选项卡的信息?而不是将我带回定义的选项卡。也许javascript或jquery可以解决我的问题? 柱塞视图 示例

  • 我在主类中有这个类,用来在我的JTabbedPane上放置一个关闭按钮。问题是,例如,我打开了三个选项卡:journal、contact和upload,而contact选项卡是当前选择的选项卡。当我尝试关闭不是选定选项卡的日记选项卡时,关闭的是当前选定的选项卡。 这就是我调用选项卡的方法:

  • 所以问题是,selenium在page1中搜索特定的项目。然后它点击它,根据网站的设计,它在一个新的标签中打开page2。如何让selenium跟随单击并在新选项卡上工作? 我虽然使用美丽的汤只是复制从page1的网址,但网站没有显示网址。相反,它显示了获取URL的函数。真的很奇怪,也很混乱。想法?

  • 下面的示例有一个名为London的选项卡,其中有另一个名为Paris的选项卡。我怎么能在伦敦不结帐的情况下打开巴黎? 该示例直接来自W3SCHOOL,但经过了一些修改以适应我的用例。 null null 我相信问题是,“活跃”班从伦敦消失,因此,一旦我向巴黎施压,就会关闭。但我不擅长jQuery。 我想它可以很容易地在W3接口上测试:https://www.w3schools.com/howto/

  • 在jQuery中创建选项卡。单击其他选项卡时,所有选项卡都将消失。我想不出解决办法 以下是无法正常工作的页面:http://www.sleepfullnights.com/products/sfn-537 这是另一个用它工作的人的JSFIDLE:http://jsfiddle.net/gravitybox/7pHg4/我已经复制并粘贴了其中的每个元素到页面中,问题仍然存在。 一个人指出,当点击标签

  • 我正在尝试在我的网站上做一个标签功能,我希望有那个标签响应。所以我做了这样的代码: null null 现在我有两样东西, > 首先,我希望在单击标题(伦敦、巴黎、东京)时关闭选项卡,然后在单击该标题时从该标题中删除活动类。 其次,我希望有两个标签在行的响应,第三个标签在第二行,然后单击打开被点击的标签,然后向下推第三个标签。 任何提示都会有帮助,提前谢谢