【问题标题】:SWRevealViewController Rear view width is not showing completelySWRevealViewController 后视图宽度未完全显示
【发布时间】:2017-04-03 04:08:21
【问题描述】:

我有一个使用 SWRevealViewController 的前视图和后视图。 我是这方面的新手(SWRevealViewController)。
当我点击前视图中的导航菜单按钮时,我想要完全完整的后视图,但它没有出现。
我试过了,但我的后视图最右边的按钮没有显示。 有什么问题吗,或者我必须添加一些额外的东西。
这是我的代码:-
前视图:-

class HomeViewController: UIViewController,SWRevealViewControllerDelegate {

@IBOutlet weak var openSlideMenuView: UIBarButtonItem!

override func viewDidLoad() {
    super.viewDidLoad()


    if self.revealViewController() != nil {

        openSlideMenuView.target = self.revealViewController()
        openSlideMenuView.action = #selector(SWRevealViewController.revealToggle(_:))

       self.navigationController?.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }

}  

谢谢

【问题讨论】:

    标签: ios swift swrevealviewcontroller xcode8.1


    【解决方案1】:

    在我的设置中,我使用 UserDefault 来设置 mainViewController 中的这两个函数。

    如果这是您正在寻找的答案,请不要忘记排除答案。

    func changeShadow (){
        let defaults: UserDefaults = UserDefaults.standard
        let shadowColor              = defaults.object(forKey: "shadowColorID") as? Int
        if shadowColor == 1 {
            revealViewController().frontViewShadowColor = UIColor.red
        }else if shadowColor == 2{
            revealViewController().frontViewShadowColor = UIColor.blue
        }else if shadowColor == 3{
            revealViewController().frontViewShadowColor = UIColor.green
        }
    }
    
    
    func changeReveal (){
        let defaults: UserDefaults = UserDefaults.standard
        let revealWidth              = defaults.object(forKey: "widthID") as? Int
        if revealWidth == 1 {
            revealViewController().rightViewRevealWidth = (view.frame.width / 5*4)
        }else if revealWidth == 2{
            revealViewController().rightViewRevealWidth = (view.frame.width / 6*5)
        }else if revealWidth == 3{
            revealViewController().rightViewRevealWidth = (view.frame.width / 7*6)
        }else if revealWidth == 4{
            revealViewController().rightViewRevealWidth = (view.frame.width / 8*7)
        }else if revealWidth == 5{
            revealViewController().rightViewRevealWidth = (view.frame.width )
        }
    }
    

    在 SWRevealViewController.h 中查找第 241 行

    // Defines how much of the rear or right view is shown, default is 260.
    // Negative values indicate that the reveal width should be computed by substracting the full front view width,
    // so the revealed frontView width is kept constant when bounds change as opposed to the rear or right width.
    @property (nonatomic) CGFloat rearViewRevealWidth;
    @property (nonatomic) CGFloat rightViewRevealWidth; // <-- simetric  implementation of the above for the rightViewController
    
    // Defines how much of an overdraw can occur when dragging further than  'rearViewRevealWidth', default is 60.
    @property (nonatomic) CGFloat rearViewRevealOverdraw;
    @property (nonatomic) CGFloat rightViewRevealOverdraw;   // <-- simetric implementation of the above for the rightViewController
    
    // Defines how much displacement is applied to the rear view when animating or dragging the front view, default is 40.
    @property (nonatomic) CGFloat rearViewRevealDisplacement;
    @property (nonatomic) CGFloat rightViewRevealDisplacement;  // <-- simetric implementation of the above for the rightViewController
    

    【讨论】:

    • 不,我问的是我的后按钮最右边的按钮没有显示。如果rearViewRevealWidth = self.view.frame.width
    • 我不确定您的后置 VC 是如何设置或布局的。也许重置约束。
    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    相关资源
    最近更新 更多