swrevealviewcontroller 在侧边菜单 open/close 时更改切换按钮图像?

swrevealviewcontrtoller change toggle button image when side menu open/close?

我在我的应用程序中使用 SWRevealViewContrtoller 作为滑出式侧边菜单。哪个工作正常。但我有一个问题,如何在单击按钮或用户拖动侧边菜单时更改侧边栏按钮图像。我指的是这个 link.

提前致谢

尝试FRDLivelyButton。在此库中,您可以更改 UIBarButton 图像。

希望对您有所帮助。

添加<SWRevealViewControllerDelegate>

设置self.revealViewController.delegate = self;

- (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position{

    //change button image below.

    if(position == FrontViewPositionLeft) {

        //drawer close

    } else {

        //drawer open
    }
}

这对我有用。快乐编码

尝试做以下-

方法一(根据你的参考link):

在你的 homeVC.m 中设置 SWRevealViewControllerDelegate 喜欢

@interface homeVC ()<SWRevealViewControllerDelegate> 并加入 viewDidLoad() self.revealViewController.delegate = self;

然后添加这个方法-

-(void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position{

    //check position here

    if(position == FrontViewPositionLeft) {

        [self.sideBarButton setImage:[UIImage imageNamed:@"open.png"] forState:UIControlStateNormal]; //self.sideBarButton is your toggle button IBOutlet

    }
    else if(position == FrontViewPositionRight) {

        [self.sideBarButton setImage:[UIImage imageNamed:@"close.jpg"] forState:UIControlStateNormal];
    }

}

方法二:

在你的sideVC.mimport-

#import "homeVC.h"
#import "SWRevealViewController.h"

现在添加 viewWillAppear()viewWillDisappear()-

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    homeVC *vc=(UserProfileViewController*)self.revealViewController.frontViewController;
    [vc.sideBarButton setImage:[UIImage imageNamed:@"close.jpg"] forState:UIControlStateNormal];

}
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    homeVC *vc=(UserProfileViewController*)self.revealViewController.frontViewController;
    [vc.sideBarButton setImage:[UIImage imageNamed:@"open.jpg"] forState:UIControlStateNormal];

}

Method1Method2的区别在于,在Method1中,当sideVC 完成动画,即位置设置为 FrontViewPositionLeftFrontViewPositionRight,而不是通过单击按钮或拖动视图更改按钮图像。但是在 Method2 中,当 sideVC 开始出现时按钮图像发生变化,当 sideVC 消失时。

更新Swift3.0

添加 SWRevealViewControllerDelegate
在你的 viewDidLoad() 添加这个

self.revealViewController().delegate = self 

 func revealController(_ revealController: SWRevealViewController!, willMoveTo position: FrontViewPosition) {
    if position == FrontViewPosition.left {
        //drawer close
    }
    else {
       //drawer open
    }
}