我想通过将工具栏滑出可见区域来切换屏幕顶部工具栏的可见性。为此,我将工具栏的 y 坐标和高度存储在 viewDidLoad 上,并在我希望它淡入/淡出时相应地更新它。
相关代码片段如下所示(您还可以在https://github.com/Duffycola/test/tree/master/TestHideToolbar找到示例项目):
@interface ViewController ()
@property (nonatomic, weak) IBOutlet UIToolbar* toolbar;
@property (nonatomic, assign) BOOL toolbarVisible;
@property (nonatomic, assign) float toolbarOriginY;
@end
@implementation ViewController
- (void)viewDidLoad;
{
[super viewDidLoad];
self.toolbarVisible = YES;
self.toolbarOriginY = self.toolbar.frame.origin.y;
}
- (IBAction)handleToggleToolbar:(id)sender;
{
self.toolbarVisible = !self.toolbarVisible;
[UIView animateWithDuration:0.5 animations:^{
CGRect toolbarFrame = self.toolbar.frame;
if (self.toolbarVisible)
{
toolbarFrame.origin.y = self.toolbarOriginY;
}
else
{
toolbarFrame.origin.y = self.toolbarOriginY - self.toolbar.frame.size.height;
}
self.toolbar.frame = toolbarFrame;
}];
}
@end
淡出效果很好,除非我在视图上做任何其他事情。例如,当我更新标签时,工具栏会恢复到其初始状态。我想某种内部刷新被触发并且工具栏在某处有一个过时的模型。