1.解决循环引用:
__weak __typeof(self) weakSelf = self;
2.设置segmentedControl:
1 NSArray *segmentedArray = [[NSArray alloc]initWithObjects:@"国内",@"国外",nil]; 2 _segmentedControl = [[UISegmentedControl alloc]initWithItems:segmentedArray]; 3 _segmentedControl.frame = CGRectMake(0,0,180,30); 4 _segmentedControl.tintColor = TheThemeColor; 5 [_segmentedControl setSelectedSegmentIndex:0]; 6 [_segmentedControl addTarget:self action:@selector(segmentedControlAction:) forControlEvents:UIControlEventValueChanged]; 7 self.navigationItem.titleView = _segmentedControl;
3.学会使用子控制器:
1 _chinaVC = [[PickChinaCityController alloc] init]; 2 _overseasVC = [[PickOverseasController alloc] init]; 3 4 [self addChildViewController:_chinaVC]; 5 [self addChildViewController:_overseasVC];
4.设置控制器的动画:
1 #pragma mark - 取消操作 2 - (void)cancelAction{ 3 4 CATransition *animation = [CATransition animation]; 5 animation.duration = 0.5; 6 animation.timingFunction = UIViewAnimationCurveEaseInOut; 7 animation.type = @"pageUnCurl"; 8 animation.type = kCATransitionFade; 9 // animation.subtype = kCATransitionFromBottom; 10 [self.view.window.layer addAnimation:animation forKey:nil]; 11 12 [self dismissViewControllerAnimated:NO completion:^{ 13 14 }]; 15 }
5.给导航栏去阴影:
1 - (void)viewWillAppear:(BOOL)animated{ 2 [super viewWillAppear:animated]; 3 4 if (iOS7) { 5 self.edgesForExtendedLayout = UIRectEdgeAll; 6 self.automaticallyAdjustsScrollViewInsets = YES; 7 self.extendedLayoutIncludesOpaqueBars = NO; 8 } 9 [self.navigationController.navigationBar setTranslucent:YES]; 10 11 //为什么要加这个呢,shadowImage 是在ios6.0以后才可用的。但是发现5.0也可以用。不过如果你不判断有没有这个方法, 12 //而直接去调用可能会crash,所以判断下。作用:如果你设置了上面那句话,你会发现是透明了。但是会有一个阴影在,下面的方法就是去阴影 13 if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)]) 14 { 15 [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]]; 16 } 17 //以上面4句是必须的,但是习惯还是加了下面这句话 18 [self.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]]; 19 20 }