1> iOS 真机测试包路径:
点击->前往->前往文件夹 : /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
2> 超级头文件Pch 配置:Build Settings ->prefix header :$(SRCROOT)/工程名/类名
3>
[_filterBgView addSubview:_hobbyBtn,_interestBtn,_classifyBtn];//分类、兴趣、爱好 - (void)filterClickEvent:(UIButton*)sender { sender.selected = !sender.selected; if (sender.selected == YES) { for (UIButton *button in self.filterBgView.subviews) { button.selected = NO; sender.selected = YES; } } if (sender.tag == kClassify_TAG) { if (sender.selected) { NSLog(@"全部分类展开"); }else { NSLog(@"全部分类关闭"); } }else if (sender.tag == kInterest_TAG) { if (sender.selected) { NSLog(@"全部兴趣展开"); }else { NSLog(@"全部兴趣关闭"); } }else if (sender.tag == kHobby_TAG) { if (sender.selected) { NSLog(@"全部爱好展开"); }else { NSLog(@"智能爱好关闭"); } } [self isShowTopView:sender.selected]; } 5.YYText修改加入图片后文字 变小的问题 //创建最主要的attribute文本 NSMutableAttributedString *contentText = [[NSMutableAttributedString alloc] initWithAttributedString:_momentIdea.attributedText]; contentText.yy_font = [UIFont systemFontOfSize:32*uiScale]; self.navigationItem.title > self.title>self.tabBarItem.title 只要设置self.title,那么self.navigationItem.title和self.tabBarItem.title值不管设置与否都和self.title一致。 tabBarItem.title 设置 1. TabBarVC 创建每个子Nav控制器的时候设置有效 CHNavBillVC *navBillCtr = [[CHNavBillVC alloc] initWithRootViewController:viewVC]; navBillCtr.tabBarItem.title = @”账单”; //设置标题 2. 每个子Nav控制的viewDidLoad里设置无效 viewWillAppear里设置有效 self.tabBarItem.title = @“账单1”; 3. 每个子Nav控制器的根控制器里viewDidLoad里可以设置 self.title = @”账单2″ self.tabBarItem.title = @“tabBar的title”; //这样设置无效 优先级: 3 > 2 > 1 即同时设置的话, 显示优先级高的内容 重点: 在每个子Nav控制器的根控制器里 self.title可以控制tabBarItem的title navigationItem.title 设置 1.TabBarVC 创建每个子Nav控制器的时候设置无效 CHNavBillVC *navBillCtr = [[CHNavBillVC alloc] initWithRootViewController:viewVC]; navBillCtr.navigationItem.title = @“Nav”; //无效 2.每个子Nav控制的viewDidLoad, viewWillAppear里设置都无效 self.navigationItem.title = @“账单”; //都无效 3.每个子Nav控制器的根控制器里viewDidLoad里可以设置 self.title = @“微信”; self.navigationItem.title = @”dsadsa”; 优先级:只有3可以设置, 但self.navigationItem.title > self.title, 所以这种优先级可以完成tabBarItem.title和navigationItem.tiltle不一样的显示 7.setNeedsDisplay和setNeedsLayout ,layOutSubViews layOutSubViews:改变布局 可以在自己定制的视图中重载这个方法,用来调整子视图的尺寸和位置。 UIView的setNeedsDisplay和setNeedsLayout 首先两个方法都是异步执行的。 setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画 了。 setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。 综上所述:setNeedsDisplay方便绘图,而layoutSubViews方便出来数据 setNeedDisplay告知视图它发生了改变,需要重新绘制自身,就相当于刷新界面. layoutSubViews&drawRects layoutSubviews在以下情况下会被调用: ? 1、init初始化不会触发layoutSubviews。 ? 2、addSubview会触发layoutSubviews。 ? 3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化。 ? 4、滚动一个UIScrollView会触发layoutSubviews。 ? 5、旋转Screen会触发父UIView上的layoutSubviews事件。 ? 6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。 ? 7、直接调用setLayoutSubviews。 drawRect在以下情况下会被调用: ? 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。drawRect 掉用是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用的.所以不用担心在 控制器中,这些View的drawRect就开始画了.这样可以在控制器中设置一些值给View(如果这些View draw的时候需要用到某些变量 值). ? 2、该方法在调用sizeToFit后被调用,所以可以先调用sizeToFit计算出size。然后系统自动调用drawRect:方法。 ? 3、通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。 ? 4、直接调用setNeedsDisplay,或者setNeedsDisplayInRect:触发drawRect:,但是有个前提条件是rect不能为0。 8.Pop 回上一界面时,移除导航控制器【栈】里面的视图VC NSMutableArray *a = [NSMutableArray arrayWithArray:self.navigationController.viewControllers]; for (UIViewController *vc in a) { if ([vc isKindOfClass:[XBNewLoginViewController class]]) { [a removeObject:vc]; self.navigationController.viewControllers = a; break; } } 9.判断当前界面是present还是push过来的 NSArray *viewcontrollers=self.navigationController.viewControllers; if (viewcontrollers.count>1) { if ([viewcontrollers objectAtIndex:viewcontrollers.count-1]==self) { //push方式 [self.navigationController popViewControllerAnimated:YES]; } }else{ //present方式 [self.navigationController dismissViewControllerAnimated:YES completion:nil]; } 9.如何使CollectionView整体上移 Set setContentOffset if (option==XBMemberExchangeCodeReceiveNotiState) { [_collectionView setContentOffset:CGPointMake(0, +500*suitScale) animated:YES]; }else if (option==XBMemberExchangeCodeDisappearState){ [_collectionView setContentOffset:CGPointMake(0, -128*suitScale) animated:YES]; }