iOS开发小技巧

已经很久没有写了,主要是不知道要写点什么。这次主要是记录一些自己在开发过程中觉得有必要记载的一些小知识,以免自己忘记。后期也会不定期的更新。下面就直接进入主题吧!
  • pch文件的配置
    如果pch就在项目目录中
    $(SRCROOT)/项目名/pch文件
    如果pch文件在项目中的一个文件夹内
    $(SRCROOT)/项目名/文件夹名/pch文件

  • 利用TabBarController搭建项目基本结构

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self addAllChildViewController];
}

/**
 * 添加所有子控制器
 */
- (void)addAllChildViewController {
   
}

/**
 * 设置子控制器
 */
- (void)setupChildViewController:(UIViewController *)vc title:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName {
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    vc.title = title;
    vc.tabBarItem.image = GetImage(imageName);
    vc.tabBarItem.selectedImage = [GetImage(selectedImageName) imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
    [self addChildViewController:nav];
}
  • 设置tabBarItem 文字的颜色
[[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : RGBACOLOR(81, 81, 81, 1.0)} forState:UIControlStateNormal];
[[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : RGBACOLOR(18, 150, 219, 1.0)} forState:UIControlStateSelected];
  • Masonry 动画
重点:[view.superview layoutIfNeeded];
示例:
[view mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.mas_equalTo(400);
    make.left.mas_equalTo(100);
    make.size.mas_equalTo(CGSizeMake(100, 100));
}];

[view.superview layoutIfNeeded];//如果其约束还没有生成的时候需要动画的话,就请先强制刷新后才写动画,否则所有没生成的约束会直接跑动画

[UIView animateWithDuration:3 animations:^{
    [view mas_updateConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(200);
    }];
    [view.superview layoutIfNeeded];//强制绘制

}];
  • 字符编码
    iOS中对字符串进行UTF-8编码:输出str字符串的UTF-8格式
    [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    解码:把str字符串以UTF-8规则进行解码
    [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  • 导航控制器奇幻的时候偶尔卡住的原因
原因:在RootViewController右划返回手势也可以响应,因为没有上一级页面,导致整个程序页面不响应
解决办法: 在导航控制器的viewDidLoad方法中设置代理
- (void)viewDidLoad {
    [super viewDidLoad];
    self.delegate = self;
}
然后实现代理方法,判断是否是根控制器
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if (navigationController.viewControllers.firstObject == viewController) {
        self.interactivePopGestureRecognizer.enabled = false;
    }else {
        self.interactivePopGestureRecognizer.enabled = true;
    }
}

未完待续......

你可能感兴趣的:(iOS开发小技巧)