实践-小细节Ⅶ

2017-11-20  本文已影响0人  進无尽

1. iOS11中UIWebVIew

所以网页的y 坐标是 0 ,但是在 iOS 11里面就是无法在 状态栏上显示,iOS11下的系统不会这样会占用 状态栏的位置

2. iOS11中 Undefined symbols for architecture x86_64:

3.从APP中跳转到各种手机设置界面(亲测有效)

一些常用的设置里的位置:

代码演示:

   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];
        }
    }

4.如何实现扫描一次蒲公英安装二维码后,内测版APP自动提示更新

本质实现方式都是集成 蒲公英的SDK。

iOS内测版实现自动检查更新
Android内测版实现自动检查更新

如果有更新版本则会提示用户前往更新,如图所示:


image

注:因操作系统限制,iOS 11及之后版本,当用户点击安装新版本后,会跳转到蒲公英应用单页。iOS 11以下,当用户点击安装新版本后仍然会在应用内直接开始安装。

5. 如何判断这个页面是消失了,还是进入了新的页面

- (void)viewWillDisappear:(BOOL)animated
{
      [super viewWillDisappear:YES];

  if ([[self.navigationController viewControllers] containsObject:self ]) {
        NSLog(@" 暂时消失");
  }else
  {
        NSLog(@" 出栈了");
    }
}

6.程序之间的相互调用

在我们的iOS开发中,我们常常会遇见在程序中打开第三方应用的功能,比如美团付款时打开支付宝,也就是程序之间的相互调用.

xcode-->targets -->info -->url type **
点击加号,出现上图所示,identifer 写bundle Indentifer就可以,URL schemes是自定义的,随便写什么都可以,其余一样

在打开一个程序,(前提是你的设备上必须有刚设置好schems的那个app),

  [[UIApplacation shareApplication] openUrl :[NSUrl urlWithString:@"你的Schemes//"];

注意://是标识符,是必须得,前面是你自定义的schemes
然后不出什么意外的话你已经通过其他程序打开了你设置schemes的程序

7. iOS11中ScrollerView或者其子类占位 状态栏设置

在ios11系统下,如果tableview或者ScrollerView 是从0开始,需要做简单的适配

适配前
if (@available(iOS 11.0, *)) {
    self.sc.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}else {
    self.automaticallyAdjustsScrollViewInsets = NO;
}
适配后

8.iOS应用内集成AppStore评分功能

跳转到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]];`

}

9.判断某一个对象是什么类

 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]]

10.使用类别为父类实现功能分散管理

我们使用类别为父类实现功能分散管理:

上一篇 下一篇

猜你喜欢

热点阅读