所以网页的y 坐标是 0 ,但是在 iOS 11里面就是无法在 状态栏上显示,iOS11下的系统不会这样会占用 状态栏的位置
一些常用的设置里的位置:
代码演示:
NSURL *url = [NSURL URLWithString:@"Prefs:root=Wallpaper"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
// 系统小于10的时候,打开Wi-Fi界面
[[UIApplication sharedApplication] openURL:url];
}else {
// 系统大于10的时候直接打开当前App的设置界面
if (([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0)) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
}
}
本质实现方式都是集成 蒲公英的SDK。
iOS内测版实现自动检查更新 Android内测版实现自动检查更新
如果有更新版本则会提示用户前往更新,如图所示:
image
注:因操作系统限制,iOS 11及之后版本,当用户点击安装新版本后,会跳转到蒲公英应用单页。iOS 11以下,当用户点击安装新版本后仍然会在应用内直接开始安装。
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:YES];
if ([[self.navigationController viewControllers] containsObject:self ]) {
NSLog(@" 暂时消失");
}else
{
NSLog(@" 出栈了");
}
}
在我们的iOS开发中,我们常常会遇见在程序中打开第三方应用的功能,比如美团付款时打开支付宝,也就是程序之间的相互调用.
xcode-->targets -->info -->url type ** 点击加号,出现上图所示,identifer 写bundle Indentifer就可以,URL schemes是自定义的,随便写什么都可以,其余一样
在打开一个程序,(前提是你的设备上必须有刚设置好schems的那个app),
[[UIApplacation shareApplication] openUrl :[NSUrl urlWithString:@"你的Schemes//"];
注意://是标识符,是必须得,前面是你自定义的schemes 然后不出什么意外的话你已经通过其他程序打开了你设置schemes的程序
在ios11系统下,如果tableview或者ScrollerView 是从0开始,需要做简单的适配
适配前
if (@available(iOS 11.0, *)) {
self.sc.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
适配后
跳转到AppStore对应应用评论页面
iOS应用内集成AppStore评分功能
可评分评论,无次数限制
- (IBAction)appStoreComentBtnAction:(UIButton *)sender {`
NSString * nsStringToOpen = [NSString stringWithFormat: @``"itms-[apps://itunes.apple.com/app/id%@?action=write-review](apps://itunes.apple.com/app/id%@?action=write-review)"``,@``"AppID"``];//替换为对应的APPID`
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:nsStringToOpen]];`
}
UIWindow *window = [[[UIApplication sharedApplication]delegate]window];
if ([vc isKindOfClass:[UITabBarController class]]) {
window.rootViewController = vc;
}else{
window.rootViewController = [[UINavigationController alloc]initWithRootViewController:vc];
}
这里很容易错误的写法是: [vc.class isKindOfClass:[UITabBarController class]]
我们使用类别为父类实现功能分散管理: