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.m
import
-
#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];
}
Method1和Method2的区别在于,在Method1中,当sideVC
完成动画,即位置设置为 FrontViewPositionLeft
或 FrontViewPositionRight
,而不是通过单击按钮或拖动视图更改按钮图像。但是在 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
}
}
我在我的应用程序中使用 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.m
import
-
#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];
}
Method1和Method2的区别在于,在Method1中,当sideVC
完成动画,即位置设置为 FrontViewPositionLeft
或 FrontViewPositionRight
,而不是通过单击按钮或拖动视图更改按钮图像。但是在 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
}
}