• swift 屏幕的翻转 + 状态栏(statusBar)的隐藏


    1.状态栏的隐藏

      这个问题是基于 UIApplication.shared.isStatusBarHidden = true; 调用居然是无效的……

      现在写下自己的代码,用来备忘吧……

      1.首先需要复写一个 hidden 的这个属性 ,然后调用 setNeedsStatusBarAppearanceUpdate() 方法,

      这样使用又觉得麻烦,所以 又多设置了一个变量 ,让使用更简单

      override var prefersStatusBarHidden: Bool {
            return self.isStatusBarHidden
        }
        
        var isStatusBarHidden = false {
            
            didSet{
                self.setNeedsStatusBarAppearanceUpdate()
            }
        }
        

     在使用的地方调用

    self.isStatusBarHidden = true
    //      self.isStatusBarHidden = false;

    2.屏幕的翻转:

     首先写下试用与 iphone 和 ipad 的

     我使用的是transfrone 旋转 视图view ,这样的前提是 这个view 是present 出来的,不能用 navigationController 了

    //定义枚举
    enum ScreenOrientation :Int {
        
        case portrait = 1;
        case landscape = 2
    }
    
    // 定义常量
    let scrw = UIScreen.main.bounds.size.width;
    let scrh = UIScreen.main.bounds.size.height;
    
    
    //定义方法
     func tranformView() -> Void {
            
            if self.orientation == .landscape {
                self.orientation = .portrait
            }else{
                self.orientation = .landscape;
            }
           
            if self.orientation == .landscape {
                
                self.isStatusBarHidden = true
                
                UIView.animate(withDuration: deviceChangeOrientationTimeIntravel, animations: {
                    
                    self.view.transform = CGAffineTransform.init(rotationAngle: CGFloat(Double.pi / 2))
                    self.view.bounds = CGRect(x:0,y:0,scrh,height:scrw);
                    self.viewWillLayoutSubviews();
                    self.view.layoutIfNeeded();
                }) { (isFinish) in
               
                }
                
            }else{
    
                self.isStatusBarHidden = false;
                
                UIView.animate(withDuration: deviceChangeOrientationTimeIntravel, animations: {
                    
                    self.view.transform = CGAffineTransform.init(rotationAngle: CGFloat(0))
                    self.view.bounds = CGRect(x:0,y:0,scrw,height:scrh);
                    self.viewWillLayoutSubviews();
                    self.view.layoutIfNeeded();
                    
                }) { (isFinish) in
          
                }
            }
        }

     简单易懂,应该是可以使用了……

    网上也找了 这个方法,但是使用的时候,只有在iphone 上用,ipad 使用无效

     /*
    创建个 extension
    使用这个 扩展 要在 appdelegate 文件中 添加代码: var blockRotation: Bool = false */
    extension AppDelegate{
    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow
    ?) -> UIInterfaceOrientationMask { if self.blockRotation == true{ return UIInterfaceOrientationMask.all; }else{ return UIInterfaceOrientationMask.portrait; } }
    }

    调用的时候


    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    //横屏 @objc func hengp()->Void{ appDelegate.blockRotation = true let value = UIInterfaceOrientation.landscapeLeft.rawValue UIDevice.current.setValue(value, forKey: "orientation"); } //竖屏 @objc func shup() -> Void{ appDelegate.blockRotation = false let value = UIInterfaceOrientation.portrait.rawValue UIDevice.current.setValue(value, forKey: "orientation") } //切换横竖屏 执行的代理方法 override func willRotate(to toInterfaceOrientation: UIInterfaceOrientation, duration: TimeInterval) { print("方向即将改变 (toInterfaceOrientation)"); } override func didRotate(from fromInterfaceOrientation: UIInterfaceOrientation) { print("方向改变完成 ");
    /* 在这里更新 约束 和 frame */
    UIView.animate(withDuration: deviceChangeOrientationTimeIntravel, animations: { self.viewWillLayoutSubviews(); self.view.layoutIfNeeded(); }) { (isFinish) in if isFinish == true{ } } }
  • 相关阅读:
    Excel长数字防止转换为科学计数法
    SVN迁移部署
    且行且珍惜
    功能的权衡——推荐功能做不做?
    渗透小白如何学编程
    Metasploit log命令技巧
    Metasploit 使用msfconsole帮助功能技巧
    Metasploit resource命令技巧
    Metasploit makerc命令技巧
    Metasploit irb命令使用技巧
  • 原文地址:https://www.cnblogs.com/Bob-blogs/p/7737841.html
Copyright © 2020-2023  润新知