我如何在我的应用程序中添加这样的标题并接收触摸事件还控制它隐藏/显示?
解决方法
这是可以解决的问题.
我为iOS 7制作了一个新项目,只有一个ViewController.这是故事板:
我在顶部添加了一个简单的UIView,在它下面添加了一个UINavigationBar,以及一个带有剩余空间的大型UIView.最后一个视图是您应该放置内容的位置.
现在这里是ViewController代码:
ViewController.h:
#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak,nonatomic) IBOutlet UIView *littleView; @property (weak,nonatomic) IBOutlet UINavigationBar *navBar; @property (weak,nonatomic) IBOutlet UIView *mainView; - (IBAction)toggleLittleView:(id)sender; @end
littleView是状态栏后面的视图,navbar是导航栏,mainView是内容视图,toggleLittleview链接到导航栏中的按钮.
ViewController.m:
@implementation ViewController { BOOL isVisible; CGFloat statusBarOffset; } - (void)viewDidLoad { [super viewDidLoad]; // Setting initial values isVisible = YES; statusBarOffset = 20; // Adding a gesture recognizer to littleView UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; tap.numberOfTapsRequired = 1; tap.numberOfTouchesRequired = 1; [_littleView addGestureRecognizer:tap]; } // Linked to the nav bar button - (IBAction)toggleLittleView:(id)sender { // If littleView is not on screen,show it before animation if (!isVisible) { _littleView.hidden = !_littleView.hidden; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; } // Animate to the new frames [UIView animateWithDuration:0.25 animations:^{ _littleView.frame = CGRectOffset(_littleView.frame,isVisible ? -(_littleView.frame.size.height-statusBarOffset) : (_littleView.frame.size.height-statusBarOffset)); _navBar.frame = CGRectMake(_navBar.frame.origin.x,_littleView.frame.origin.y + _littleView.frame.size.height,_navBar.frame.size.width,_navBar.frame.size.height); CGFloat offSet = isVisible ? self.view.frame.size.height - _navBar.frame.size.height + statusBarOffset : self.view.frame.size.height - _navBar.frame.size.height - _littleView.frame.size.height + statusBarOffset; _mainView.frame = CGRectMake(_mainView.frame.origin.x,_navBar.frame.origin.y + _navBar.frame.size.height,_mainView.frame.size.width,offSet); isVisible = !isVisible; } completion:^(BOOL finished) { // If view is not visible after animation,hide it if (!isVisible) { _littleView.hidden = !_littleView.hidden; [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleDefault]; } }]; } // Do stuff on tap -(void)handleTap:(UIGestureRecognizer*)tap { [[[UIAlertView alloc] initWithTitle:@"Test" message:@"You tapped !" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; } @end
警告
这段代码并不完美,但它基本上复制了你正在寻找的效果.你应该努力让它按照你的意愿行事.此外,这是在一个简单的UIViewController中实现的,没有嵌入UINavigationController,我手动添加了导航栏.此代码不适用于UITableViewController或嵌入UINavigationController的UIViewController.它不使用autolayout,你绝对应该在iOS 6/7下使用它.
这是gif预览:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。