1. 新建UITableViewController:Hall(购彩大厅)->Controller->Cocoa Touch Class->Class:HMHallController;Subclass of:UITableViewController;
2. 设置“Hall.storyboard”文件的类为“HMHallController”:Custom Class->Class:HMHallController
3. 设置导航栏标题:Navigation Item->Title:购彩大厅
4. 添加导航栏左侧“活动”按钮:在“HMHallController.m”文件的“viewDidLoad”方法中创建“活动”按钮,代码如下:
//图片 UIImage* image = [UIImage imageNamed:@"CS50_activity_image"]; //告诉系统使用这个图片的时候,不进行渲染 image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; //创建 item UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(activityClick)]; //添加到导航栏左侧 self.navigationItem.leftBarButtonItem = item;
5. 在“HMHallController.m”文件中申明“遮罩视图”的常量和“遮罩视图上图片”的常量,代码如下:
@property (nonatomic, weak) UIView* coverView;
@property (nonatomic, weak) UIImageView* imageView;
6. 在“HMHallController.m”文件中实现按钮点击事件,代码如下:
//活动的点击事件 - (void)activityClick { //遮罩 UIView* coverView = [[UIView alloc] initWithFrame:kScreenSize]; coverView.backgroundColor = [UIColor blackColor]; coverView.alpha = 0.5; //添加到最外层的控制器 [self.tabBarController.view addSubview:coverView]; self.coverView = coverView; //imageView UIImageView* imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"showActivity"]]; // 开启用户交互 imageView.userInteractionEnabled = YES; imageView.center = self.view.center; //注意: 不添加到 cover 上的原因是因为父控件如果透明,那么子控件也会透明 [self.tabBarController.view addSubview:imageView]; self.imageView = imageView; //关闭按钮 UIButton* closeButton = [[UIButton alloc] init]; //获取图片 UIImage* closeButtonImage = [UIImage imageNamed:@"alphaClose"]; closeButton.frame = CGRectMake(imageView.bounds.size.width - closeButtonImage.size.width, 0, 0, 0); [closeButton setBackgroundImage:closeButtonImage forState:UIControlStateNormal]; [closeButton sizeToFit]; [imageView addSubview:closeButton]; //监听关闭按钮的点击 [closeButton addTarget:self action:@selector(closeClick) forControlEvents:UIControlEventTouchUpInside]; }
7. 在“HMHallController.m”文件中实现关闭按钮事件,代码如下:
//关闭按钮 - (void)closeClick { [UIView animateWithDuration:0.25 animations:^{ [self.coverView removeFromSuperview]; [self.imageView removeFromSuperview]; }]; }