iOS-BaseConfig-工程基础配置

1> iOS 真机测试包路径:

点击->前往->前往文件夹 : /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

2> 超级头文件Pch 配置Build Settings ->prefix header :$(SRCROOT)/工程名/类名

iOS-BaseConfig-工程基础配置

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]; 
    }

 

iOS-BaseConfig-工程基础配置

上一篇:Android so注入(inject)和Hook技术学习(三)——Got表hook之导出表hook


下一篇:HDU 1017A Mathematical Curiosity (暴力统计特殊要求个数)