小白的学习路上整理的小知识点:
1、在AUIViewController页面上显示BUIViewController页面的半透明背景。
在A控制器push到B控制器页面的方法中:
//设置半透明背景,需加载此判断,否则页面效果是使用present方法弹出时遇到底层view变黑(ios为了保证系统流畅度同一时间只允许显示一个viewController)
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) {
Bvc.modalPresentationStyle=UIModalPresentationOverCurrentContext;
}else{
self.modalPresentationStyle=UIModalPresentationCurrentContext;
}
随后在B控制中的init方法中,设置背景颜色
//设置半透明背景
UIColor *color=[UIColor blackColor];
self.view.backgroundColor=[color colorWithAlphaComponent:0.7];
相关文档链接:
2、导航试图下的多个页面,设置直接“返回首页”。
有时候我们的NavigationController下面会有好几层,进到里面的view之后又想返回到上面的几层view,只要是同一个NavigationController父类下的view都可以用用下面这句代码。
[self.navigationControllerpopToViewController:[self.navigationController.viewControllersobjectAtIndex:([self.navigationController.viewControllerscount] -4)]animated:YES];
这句代码什么都不用改,只要把数字“2”改成你要网上跳转的层数+1就行。
试了一下,“1”代表当前的view,“2”代表上一层的view,“3”代表上上层的view,以此类推。
3、为导航栏主题添加背景和文字颜色:
设定导航条背景颜色
方法1:[[UINavigationBarappearance]setBarTintColor:[UIColorblackColor]];
方法2:self.navigationController.navigationBar.barTintColor = [UIColor greenColor];
设定导航栏文字颜色
方法1:[self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:19],NSForegroundColorAttributeName:[UIColor whiteColor]}];
方法2:self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
4、把汉字转换为拼音。(如需用直接调用方法)
-(NSString*)hanzi2pinyin:(NSString*)str{
NSMutableString * ms = [[NSMutableString alloc]initWithString:str];
if(CFStringTransform(( __bridge CFMutableStringRef)ms,0,kCFStringTransformMandarinLatin,NO)){
NSLog(@"Pingying: %@", ms);// wǒ shì zhōng guó rén
}if(CFStringTransform((__bridge CFMutableStringRef)ms, 0,kCFStringTransformStripDiacritics,NO)) {
NSLog(@"Pingying: %@", ms);// wo shi zhong guo ren
}
return ms;
}
用kCFStringTransformMandarinLatin方法转化出来的是带音标的拼音,如果需要去掉音标,则继续使用kCFStringTransformStripCombiningMarks方法即可。
5、关闭或退出键盘的方式:
第一种:点击return,直接关闭键盘。(使用条件:能获取到obj对象时)(有UITextfileddelegate协议)
-(BOOL)textFieldShouldReturn:(UITextField*)textField{
return[texresignFirstResponder];
}
第二种:点击背景View收起键盘(你的View必须是继承control)(使用条件:有多个obj对象时)
[self.view endEditing:YES];
第三种:你可以在任何地方加上这句话,可以用来统一收起键盘。
[[[UIapplicationsharedApplication] keyWindow] endEditing:YES];
第四种:直接发送 resignFirstResponder 消息:
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder)
6 iOS10适配:被弃用的openURL
文档链接:iOS10适配:被弃用的openURL
苹果在iOS 2中引入了openURL:方法来进行APP间的跳转。不过在iOS 9中,相关的canOpenURL:函数已经被私有化了,苹果禁止开发者查询设备上是否安装了某款APP。在iOS 10中,苹果弃用了openURL,转而用openURL:options:completionHandler:替代。它可以异步执行并在主队列中执行完成后进行回调(此方法替换原来的openURL:)。
关于Options 参数
UIApplication 头文件为options字典列出了一个key:
UIApplicationOpenURLOptionUniversalLinksOnly:如果这个要打开的URL有效,并且在应用中配置它布尔值为true(YES)时才可以打开,否则打不开。
为了覆盖默认行为,创建一个设置key值了True的字典作为参数传入:
NSDictionary *options = @{UIApplicationOpenURLOptionUniversalLinksOnly : @YES};
[application openURL:URL options:options completionHandler:nil];
以上面示例,如果我设置它为true并打开URL:https://twitter.com/kharrison 时, 如果我并没有安装Twitter app那它就会失败,同时会调用safari来打开这个链接。
网友评论