iOS开发中一些常用处理及技巧

调试时打印出一个对象的具体数据

在模型类中重写debugDescription方法

debugDescription在打断点通过LLDB po 命令打印对象时会调用,该方法是NSObject协议中的一个方法,而且NSObject中已经做了默认实现,默认是打印对象的地址和类名

在模型中重写该方法自定义输出内容


- (NSString *)debugDescription {

return [NSString stringWithFormat:@"<%@:%p>:%@",[self class],&self,@{@"name" : _name,@"age" : _age}];

}


实现导航栏透明

给导航栏一张空的背景图片即可


[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

将导航栏的线也透明


self.navigationController.navigationBar.shadowImage = [UIImage new];

导航栏透明效果根据下拉距离控制


[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0; // 根据偏移量改变alpha即可


导航栏背景颜色设置


self.navigationBar.barTintColor = [UIColor orangeColor];

全局设置navigationBar、Tabbar的样式


[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];

[[UINavigationBar appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:18]}];

[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:10]}];

打印View的所有子视图


po [[self view] recursiveDescription]


加载xib 转换为UIView

  • UINib加载

UINib *nib = [UINib nibWithNibName:@"XLStockOrdersSectionHeader" bundle:[NSBundle mainBundle]];

UIView *header = (UIView *)[nib instantiateWithOwner:nil options:nil].firstObject;

  • NSBundle加载

UIView *header = (UIView *)[[NSBundle mainBundle] loadNibNamed:@"XLStockOrdersSectionHeader" owner:nil options:nil].firstObject;

UINib 与 NSBundle

NSBundle加载每次都是从本地读取xib到内存中

UINib加载xib之后会缓存在内存中,当再次需要改xib时从内存中读取


presentViewController


TestViewController *testVC = [[TestViewController alloc] init];

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:testVC];

[self presentViewController:nav animated:YES completion:nil];

在每一个控制器都应该添加下面的方法,方便监控每一个控制器的销毁


- (void)dealloc {

#ifdef DEBUG

NSLog(@"dealloc -- %@",[selfclass]);

#endif

}

设置textfield的placeholder的颜色两种方法

  1. 设置textfield的attributeplaceholder

    
      NSAttributedString*attr = [[NSAttributedStringalloc]initWithString:@"占位文字"attributes:@{NSBackgroundColorAttributeName:[UIColorwhiteColor]}];
    
    self.phoneNumTextField.attributedPlaceholder= attr;
    
    
  2. 通过KVC方式

    
    [self.phoneNumTextFieldsetValue:[UIColorwhiteColor]forKeyPath:@"_placeholderLabel.textColor"];
    
    

你可能感兴趣的:(iOS开发中一些常用处理及技巧)