(iOS)小知识、不常用、易忘记、持续更新

1、 设置系统导航栏标题颜色和字体大小等一些属性

[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont systemFontOfSize:20]}];

当然还可以设置更多的Attributes属性,只需要将你想要设置的属性添加到字典里面就好啦!command点一个属性进去,就可以看见很多属性,基本是可以满足我们的需求了的!

小贴士:Attributes还可以设置按钮标题等等一系列Title属性

列如:[button setAttributedTitle:@{把你需要设置的属性放进来就可以啦} forState:UIControlStateNormal];


2、 下面是强迫症的福音,小弟也有点小小强迫症~~~

ps:当我们在项目删除了一些文件后,Xcode会报黄色警告⚠️

(iOS)小知识、不常用、易忘记、持续更新_第1张图片

紫色的小箭头就是警告的原因,说文件找不到,黄色箭头是找不到的文件,明明就删除了还找来干啥?这是Xcode自带仓库出现的警告,很是逼死我这种强迫症患者~~~

解决方法:command + ,进入偏好设置,如图

(iOS)小知识、不常用、易忘记、持续更新_第2张图片

把Source Control 取消勾选,好了世界安静了!

ps:取消后就不能用Xcode自带的仓库管理了,不过可以用外部SVN或Git(小弟也是比较喜欢用外部的~)还有用新Xcode后控制台打印一些乱七八糟的东西,这个网上有很多教程解决。


3、 有时候我们会遇到在为按钮或者tabBarItem等设置图片的时候,系统会自动把我们的图片渲染成蓝色,这时我们就可以让图片禁止系统渲染使用原图,方法如下:

UIImage * originImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];这样拿到的UIImage原图是什么样的就是什么样了。


4、 为TabBar设置阴影和背景色

UITabBarController *tabBarController = [[UITabBarController alloc] init];

// 设置阴影

tabBarController.tabBar.layer.shadowOpacity = 2;

tabBarController.tabBar.layer.shadowOffset = CGSizeMake(0, -1);

tabBarController.tabBar.layer.shadowColor = [UIColor grayColor].CGColor;

_tabBarC = tabBarController;

// 设置背景色

[UITabBar appearance].translucent = YES;

UIView *view = [[UIView alloc]initWithFrame:_tabBarC.tabBar.bounds];

view.backgroundColor = [UIColor whiteColor];

[[UITabBar appearance] insertSubview:view atIndex:0];


5、调用openURL拨打电话

方法1:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:15977688888"]];

方法2:

UIWebView *callWebview = [[UIWebView alloc] init];

[callWebview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"tel:15977688888"]]];

[self.view addSubview:callWebview];

方法3:(前面都是用tel:加电话号码,这个用"telprompt://"加电话号码,注意别用错,听说用这个上架容易被拒绝)

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://15977688888"]];

使用上面方法时出现:[Common] _BSMachError: port a713; (os/kern) invalid capability (0x14) "Unable to insert COPY_SEND"这个警告应该是xcode编译出现的,不影响我的使用,有人解决这个问题,麻烦留言告诉我一下,看国外的网址太慢了~~~


6、今天刚刚做到搜索栏历史记录功能,顺便记录一下,万一有小伙伴需要咧(轻量级的缓存NSUserDefaults为例),一键清空,控制保存记录条数,过滤相同数据,下面是代码:

-(void)SearchText :(NSString *)text

{

// 可变数据来添加历史记录

NSMutableArray *historyArray = [[NSMutableArray alloc] init];

if (self.historyArray) {

historyArray = [self.historyArray mutableCopy];

}

// 过滤相同的历史记录

if ([historyArray indexOfObject:text] != NSNotFound) {

// 相同记录不做操作

}else{

// 不同时添加到缓存

[historyArray addObject:text];

// 当历史记录超过6条时清除前面加入的第一条(当然也可以不使用,不过我们需求是保存6条)

if (historyArray.count > 6) {

[historyArray removeObjectAtIndex:0];

}

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

[userDefaults setObject:historyArray forKey:@"historyArray"];

}

}

- (void)emptyNSUserDefaults {

// 清空历史记录

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

[userDefaults removeObjectForKey:@"historyArray"];

self.historyArray = @[];

[self.hisTabelView reloadData];

}

-(void)readNSUserDefaults

{

// 读取历史记录

NSUserDefaults *userDefaultes = [NSUserDefaults standardUserDefaults];

self.historyArray = [userDefaultes arrayForKey:@"historyArray"];

if (self.historyArray) {

[self.hisTabelView reloadData];

}

}

ps:当然我们要显示出来的数据是要倒序的,在这里顺便也说一下吧,其实就是把下标倒序就好了(历史数据数组长度➖当前行数):cell2.textLabel.text = self.historyArray[(self.historyArray.count-1)-indexPath.row];


7、在输入文字时判断是否全为空格

NSInteger length = [[textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length];

这个方法主要是用了集合特性,只要判断length是否为零就可以知道输入的是否全为空格


8、使用系统方法几行代码实现高斯模糊效果

这是系统自带的四种模糊效果:typedef NS_ENUM(NSInteger, UIBarStyle) {

UIBarStyleDefault          = 0,

UIBarStyleBlack            = 1,

UIBarStyleBlackOpaque      = 1, // Deprecated. Use UIBarStyleBlack

UIBarStyleBlackTranslucent = 2, // Deprecated. Use UIBarStyleBlack and set the translucent property to YES

} __TVOS_PROHIBITED;

这是我们要写的代码

UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds];

bgImgView.image = [UIImage imageNamed:@"backG"];

[self.view addSubview:bgImgView];

UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, bgImgView.frame.size.width, bgImgView.frame.size.height)];

toolbar.barStyle = UIBarStyleDefault;

[bgImgView addSubview:toolbar];


9、使用Xcode8或以上的小伙伴用远程通知要在下面打开通知

(iOS)小知识、不常用、易忘记、持续更新_第3张图片

当然,有的小伙伴打开发现,通知这个选项不见了~~~f*ck~~~不急,现在去下面的图修改一下team就好了~~~当然你的AppleID必须是勾选的这些应用的,这里就不多说了

(iOS)小知识、不常用、易忘记、持续更新_第4张图片

10、项目中想使用dismiss回到根控制器的方法和跳级dismiss方法

①、回根控制器方法:遍历拿到根控制器再dismiss

-(void)dismissToRootViewController

{

UIViewController *vc = self;

while (vc.presentingViewController) {

vc = vc.presentingViewController;

}

[vc dismissViewControllerAnimated:YES completion:nil];

}

②、跳级dismiss方法,思路和上面差不多,此方法也可以回根控制器

[self.presentingViewController.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

一级一级得dismiss~根据你自己的需求加presentingViewController

未完待续。。。。。。。

你可能感兴趣的:((iOS)小知识、不常用、易忘记、持续更新)