精华内容
参与话题
问答
  • 本课程主要介绍了开发iOS app的一些基本情况。例如,需要的硬件和软件条件,如何申请开发者账号,XCode的常用功能介绍。后给出一个iOS App的案例来演示开发App的过程。
  • 小波说iOS8 智能视图 完整版

    万人学习 2015-05-12 11:08:27
    随着iOS8市占率达70%,开发知识已经大幅更新,如何跟上节奏,2015年是iOS开发者有挑战的一年。 小波说iOS8,为你加油助航!
  • ios9与ios8的区别

    2016-03-03 17:36:21
    iOS 9 地图增加了最新的公共交通路线导航服务 Transit; iOS 9 上,苹果重新设计了多任务视图,改为堆叠卡片方式,现在你可以通过快速翻页的方式更快速的切换到已经打开的应用程序,同时了解究竟有多少个打开应用也...

    转载地址:http://www.pc6.com/edu/80327.html

    一些应用更新之后的语言是英文,但是可以设置
    iOS 9 地图增加了最新的公共交通路线导航服务 Transit;
    iOS 9 上,苹果重新设计了多任务视图,改为堆叠卡片方式,现在你可以通过快速翻页的方式更快速的切换到已经打开的应用程序,同时了解究竟有多少个打开应用也更加容易些。
    全新的 iOS 9 中,苹果引入了一个名为“低功耗模式(low power mode)”的功能。苹果声称,该模式下 iOS 9 可让设备延长 3
    个小时的续航。而且这个“低功耗模式”无需手动开启,它会在低电量时自动启用。同时,正常情况下,运行 iOS 9 的 iPhone 6 能多 1
    个小时使用续航。换句话说,相比 iOS 8 而言,iOS 9 大幅改善了续航。

    2015年苹果全球开发者大会(WWDC 2015)在美国旧金山正式开幕。苹果公司在本次盛会上主要公布iOS 9、OS X以及Watch OS三款重要系统的更新内容以及其他服务,其中iOS9系统中的智能化以及个性化特色非常引人注目。下面,Pc6苹果网的小编就带领大家详细的看一下ios9和ios8有什么不同。

    IOS9.0
    名称: IOS9.0VBate1测试版
    大小: 1.30G
    下载: http://www.pc6.com/mac/148045.html
    二维码
      苹果正式公布了 iOS 9 操作系统。按照苹果的意思,该版本只是提供一个简单的预览,这意味着可能还有未知的新功能尚未加入,需要在新硬件发布之时进行配合。不过,就目前简单的新功能预览来看,iOS 9 相对于 iOS 8 更多的是增量升级,即在原有功能上进行增加和优化。

      Siri

      iOS 9 的重大改进之一就是 Siri。现在改人工智能助手变得更加丰富多彩,而且能够在更多场景中大显身手。简答的说,新的界面更加像人在说话,而且可以查询更多在 iOS 8 上无法问到更多主题内容。发布会上,苹果向我们展示了很多实际的例子,包括“帮我找到我去年 8 月份去犹他州的照片”,或者让其在 Apple Music 中“告诉我 1982 年的歌曲排行榜”。

      总之,iOS 9 上的 Siri 更加聪明,更像私人助理了,让它帮你查找某个照片或视频,又或者让它提醒你记得看完网上的某篇文章,这些都是十分轻松可以办到的事情。而在 iOS 8 上, Siri 基本上是一个无记忆的机器人,甚至不会记得前面几句你说过的话。

      另外,iOS 9 上,Siri 还能据你所在的时间、地点、打开的 app、连接的设备等等,来预测你的下一步行动;当 iPhone 连接至自己的耳机或汽车,它将向你建议你最近播放过的某个播放列表或有声读物;早上拿起 iPhone 的时候,它会根据你的日常习惯向你建议要打开的 app;在日历 app 的某个事件中添加了地址,你的 iPhone 会提醒你该出发的时间,甚至是将实时路况考虑在内。

      这一切的一切,无不体现了苹果在人性化的感知方面对抗 Google Now 的决心。

      Spotlight搜索

      在 iOS 9 上, Spotlight 成为了更智能的搜索引擎,当然一些功能也是受益于 Siri 的全新改进。你只要通过键盘输入文字搜索,就能发现它与 iOS 8 完全不同之处。说实在,Spotlight 能够理解日常语言,就像 Siri,你输入“昨天安装的应用”,它就能把昨天的应用提供给你。

      与 iOS 8 不同的地方在于,Spotligh 整个界面也进行了改进,无时不刻不在向你推荐最近通话过的联系人、使用过的应用程序,以及你可能感兴趣的去处。另外,搜索它还支持直接搜索比分、赛事日程、电影、单位转换、应用内信息等,这些在 iOS 8 上完全做不到。

      Apple Pay

      不出所料,苹果在 iOS 9 升级道中还是对 Apple Pay 服务进行了一定的改进。与 iOS 8 的相同之处在于,该服务仍然只支持 iPhone 6 和 iPhone 6 Plus,还有 Apple Watch。

      其实在 iOS 9 上就是 Apple Watch 整个服务的提升,比如在美国地区,越来越多的知名品牌都已支持使用 Apple Pay来付款,几乎所有信用机构都将接受使用 Apple Pay。对比 iOS 8,iOS 9 上支持接受使用 Apple Pay 的商户将超过 100 万。

      还有一点区别就是,iOS 9 上 Passbook 应用程序将更名为 Wallet(钱包),用于存放信用卡、借记卡、积分卡、登机牌、票券等等。

      地图

      苹果发布 iOS 8 时,地图应用程序并没有任何重大升级,只是小幅调整,而且还存在将用户导航到沟里去的错误。iOS 9 情况大为改善,增加了最新的 公共交通路线导航服务 Transit。

      这是一个显著的提升,比如随时获取公交、火车、地铁、轮渡等公共交通工具的线路导航和实时位置等,还有利用 Transit 快速找到出站口和进站口,指导用户快速进出车站。这些功能在 iOS 8 上并不支持,而且在中国,Transit 方式将适用于超过 300 个城市!

      应用程序切换

      iOS 8 基本上只是延续了 iOS 7 的多任务试图,并增加了联系人的快捷方式,而且每一个任务排列得长又长,很难知道究竟打开了多少个应用程序。

      但是在 iOS 9 上,苹果重新设计了多任务试图,改为堆叠卡片方式,现在你可以通过快速翻页的方式更快速的切换到已经打开的应用程序,同时了解究竟有多少个也更加容易些。

      备忘录

      在 iOS 8 上,备忘录这个应用程序,基本上只有文本编辑功能,十分单一。而在 iOS 9 上,新增了很多实用的功能,任何内容几乎都可以添加到备忘录中,比如可添加购物清单列表,支持启用相机来添加照片,还可以直接手动画图添加在内, Safari、地图及其他应用程序中的内容都可以直接添加至备忘录中。

      iPad 专属升级

      苹果在 iOS 9 中加入了几个特备针对 iPad 改进的布局改进和新功能。

      首先是 iOS 8 完全不具备的 QuickType 的改进,对于手持大屏幕 iPhone 6 Plus 和 iPad 的用户,在横屏模式下都将受益于这个新功能。新的 QuickType 键盘增加了一个让输入和编辑都更方便的全新 Shortcut Bar 快捷工具栏,写东西的时候复制、剪切和粘贴更效率也更加得心应手,同时还能利用相机快速插入拍摄的图,或者插入附件,更改文字格式。第三方输入法也提供 Shortcut Bar 的 API 接入。另外,搭配外置键盘使用 iPad 时,外接键盘便支持更多的快捷键,比如在应用之间切换。

      更重要的是,在 iPad Air 2 上,iOS 9 新增加了 Picture in Picture、Slide Over 和 Split View 单屏多任务功能。Picture in Picture 画中画熟悉三星高端设备的应该都清楚,这是一个让视频独立悬浮播放的功能。Slide Over 是快速打开第二个 app 的快捷栏,Split View 则是单屏双任务试图。

      电池续航

      在 iOS 8 上,苹果没有设计任何省电模式,所以作为用户你需要自己手动执行一些省电操作,比如关闭数据流量、关闭 Wi-Fi 和蓝牙、清理多任务等等,以尽量节省电量。

      全新的 iOS 9 中,苹果引入了一个名为“低功耗模式(low power mode)”的功能。苹果声称,该模式下 iOS 9 可让设备延长 3 个小时的续航。而去这个“低功耗模式”无需手动开启,它会在低电量时自动启用。同时,正常情况下,运行 iOS 9 的 iPhone 6 能多 1 个小时使用续航。 换句话说,相比 iOS 8 而言,iOS 9 大幅改善了续航。

      iOS的9明显好转一般表现也与苹果公司说,它给你多一件小时全程使用过运行iOS 8台设备。

      支持设备和发布时间

      按照以往苹果的升级策略,每一个新 iOS 版本的升级,总会有那么一两款较旧的 iOS 设备无法获得升级。到 iOS 9,预期应该不会支持 iPad 2 和 iPhone 4S 了。但是,iOS 9 对设备支持的情况大幅改善,依旧维持了与 iOS 8 相同的设备兼容性,侧面也说明 iOS 9 进行了优化并增强了系统的性能。

      去年发布 iOS 8 的时候,苹果也是表示秋季提供正式升级,但时间推到了 9 月份。而 iOS 9,除了开发者之外,也将于 7 月份发布面向公众的 Beta 版本,允许更多人更快体验到全新的 iOS 9。

      还有个好消息就是,iOS 9 下载和安装变得更轻松,因为苹果已经降低了所需空间的要求。之前 iOS 8 需要 4.6GB 的闲置空间,使得不少用户只能重新回复,但 iOS 9 对升级空间的要求降低到了 1.3GB。

    展开全文
  • ios8与ios7有什么区别

    2016-03-03 17:09:35
    ios8与ios7有什么区别

    转载地址:http://zhidao.baidu.com/link?url=Q3QwAeW_3QkdGOsS6lsFBCQdrF2dh3VjTD–0PMA2ddvFvf_lQd5dAaoK-1LRPwSIn9vAAGkupkJk_RDKPcgsSIaYAcNUY-coHGr9C_-2du
    ios8已经更加开放了。具体主要表现在以下几点功能:
      1.支持第三方输入法
      苹果的输入法一直被人诟病,而倒了iOS8苹果终于开放第三方输入法了。喜大普奔的更新!苹果自己的汉字输入法也加入了快速联想功能,输入更迅速。
      iMessage可发送语音和视频
      体验与微信非常类似。
      2.通知中心的革新
      在锁屏状态下,用户可以直接回复短信。
      3.HealthKit健康平台
      第三方健康App应用可以通过过此平台来管理心率、运动、饮食等健康数据。
      4.Family Sharing家庭分享
      一个人买的应用或歌曲,可以分享最多6名亲属使用,同时它还能控制儿童购买应用。
      5.改进Siri
      Siri更加智能,并且增强了汽车内Siri语音的体验。
      6.针对中国的优化
      iOS 8针对中国市场进行了特殊优化,比如准确的中文导航和农历等。
      7.改进Spotlight搜索
      Spotlight不再只是本地搜索,可以搜索互联网内容和应用内容
      8.改进多任务界面
      多任务切换界面上方加入最近联系人
      9.强大的照片编辑功能
      Mac、iOS设备可以同步进行图片编辑,可以调整照片的曝光度、对比度、亮度等参数。更加强大
      10.TouchID向第三方开放
      第三方应用可以使用TouchID接口,意味着未来的很多应用都可以用指纹识别功能了
      11.HomeKit智能家居功能
      苹果向智能家居开放的API,比如未来通过这个API可以实现iPhone控制门锁,控制家庭灯光和电器开关等。
      12.相机对焦时可以自由调节进光量
      iOS8不仅为照片的后期处理加入了强大编辑功能,内置相机同样增加了一项不可忽视的功能——自由调节进光量,在拍摄中,触摸屏幕对好焦点后,会在对焦框旁边出现进光量调节轴,能够自由增加或降低拍摄的曝光量,再也不必因为光的问题频繁找焦点测光了。
      13.Safari新增DuckDuckGo搜索引擎
      DuckDuckGo是来自于美国的一家小型搜索引擎商,其最大的特点是严格保护用户的隐私,承诺不记录不监控用户的搜索内容,搜索内容也更加的精准。相信国内用户是不关心它的,不过有多一个好选择也不错。
      14.监测每款应用的耗电量
      iOS8还有一个隐藏较深的功能,在设置中打开电池用量菜单,用户会发现近期使用过的APP的耗电百分比都在里面,一目了然。经过这样的监测,的确是相机最耗电!
      15.盲文键盘
      iOS8终于新增了盲文键盘。对于盲人来说,这真的是个福音,这也将会对他们的生活产生巨大影响。
      16.智能快捷按钮
      
      iOS8设备会根据位置,自动在锁屏界面左下角显示相关应用的快捷启动按钮。在iOS8Beta1测试版中,苹果利用iBeacon技术将基于地理位置的应用通知推送到用户iPhone或iPad的锁屏界面上,这些通知图标位于锁屏界面左下方,用户可以按住这个小图标向上滑动解锁设备打开该应用。
      比如当用户拿着更新至iOS8的手机到星巴克咖啡店时,星巴克的APP就会出现在锁屏的左下角(与相机快捷键相对应),用户按住它向上滑动就可以直接启动APP,与锁屏启动相机APP一致。此外,即使用户没有安装某个应用,在特定地点时,iOS 8也会向用户推荐应用,只是打开后会进入App Store应用安装界面。不过经过测试似乎该功能目前还不够完善。

    展开全文
  • iOS iOS8注册通知

    万次阅读 2014-09-12 12:54:17
    一直更新了iOS8,但是一直没有开始研究这个iOS8,今天因为项目用到了推送,于是体验了iOS8的推送,先讲讲这个推送。目前分为四个推送:用户推送,本地推送,远程推送,地理位置推送。 ...

    一直更新了iOS8,但是一直没有开始研究这个iOS8,今天因为项目用到了推送,于是体验了iOS8的推送,先讲讲这个推送。目前分为四个推送:用户推送,本地推送,远程推送,地理位置推送。

    推送界面

    用户推送

    我们先开始讲这个用户推送,我们要使用之前必须先注册这个推送,用户要允许这个程序进行推送

    注册过程:

    if (IS_IOS8) {
            //1.创建消息上面要添加的动作(按钮的形式显示出来)
            UIMutableUserNotificationAction *action = [[UIMutableUserNotificationAction alloc] init];
            action.identifier = @"action";//按钮的标示
            action.title=@"Accept";//按钮的标题
            action.activationMode = UIUserNotificationActivationModeForeground;//当点击的时候启动程序
            //    action.authenticationRequired = YES;
            //    action.destructive = YES;
            
            UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init];
            action2.identifier = @"action2";
            action2.title=@"Reject";
            action2.activationMode = UIUserNotificationActivationModeBackground;//当点击的时候不启动程序,在后台处理
            action.authenticationRequired = YES;//需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;
            action.destructive = YES;
            
            //2.创建动作(按钮)的类别集合
            UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];
            categorys.identifier = @"alert";//这组动作的唯一标示,推送通知的时候也是根据这个来区分
            [categorys setActions:@[action,action2] forContext:(UIUserNotificationActionContextMinimal)];
            
            //3.创建UIUserNotificationSettings,并设置消息的显示类类型
            UIUserNotificationSettings *notiSettings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIRemoteNotificationTypeSound) categories:[NSSet setWithObjects:categorys, nil]];
            [application registerUserNotificationSettings:notiSettings];
            
        }else{
            [application registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
        }


    - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
    {
    //    UIUserNotificationSettings *settings = [application currentUserNotificationSettings];
    //    UIUserNotificationType types = [settings types];
    //    //只有5跟7的时候包含了 UIUserNotificationTypeBadge
    //    if (types == 5 || types == 7) {
    //        application.applicationIconBadgeNumber = 0;
    //    }
        //注册远程通知
        [application registerForRemoteNotifications];
    }


    我们现在仅仅是注册了通知的设置,还要注册推送通知的行为,在iOS8中,行为能直接在推送消息进行,如回复消息,拒绝消息等总结就是三个方法进行注册
    直接在推送消息进行回复


    我们如何能进行这些行为,首先我们需注册这些行为。

    Actions

    UIMutableUserNotificationAction *acceptAction = [[UIMutableUserNotificationAction alloc] init];
    acceptAction.identifier = @"RickAction";
    acceptAction.title = @"Accept";
    acceptAction.activationMode = UIUserNotificationActivationModeBackground;
    acceptAction.destructive = NO;
    acceptAction.authenticationRequired = NO;

    Categories
    UIMutableUserNotificationCategory *inviteCategory = [[UIMutableUserNotificationCategory alloc] init];
    inviteCategory.identifier = @"INVITE_CATEGORY";
    [inviteCategory setActions:@[acceptAction] forContext:UIUserNotificationActionContextDefault];


    Maybe和Accept

    我们需要注意这个UIUserNotificationActionContextDefault,如果我们使用这个,我们会得到这个推送行为,Maybe和Accept

    我们还可以使用UIUserNotificationActionContextMinimal得到的是Decline和Accept行为

    Decline和Accept
    Settings

    在这些行为注册之后,我们加上之前提到的推送设置就完成了注册推送的这个流程了

    NSSet *categories = [NSSet setWithObjects:inviteCategory, nil];
    UIUserNotificationType  types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert ;
    UIUserNotificationSettings  *mySettings  = [UIUserNotificationSettings settingsForTypes:types categories:categories];
    [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];

    远程推送

    远程推送,所有消息大小不超过2KB,我们获取远程推送的json格式的消息,解析这个消息就是我们的远程推送了:

    {
        “aps”: {
            "content-available": 1,
            "alert": "This is the alert text",
            "badge": 1,
            "sound": "default"
        }
    }

    若要使用远程推送,满足两个条件:一、用户需要调用注册用户推送registerUserNotificationSettings;二、在info.plist文件中UIBackgroundModes必须包含远程通知。

    <span style="font-family: Helvetica, Arial, Geneva, sans-serif;">[[UIApplication sharedApplication] registerForRemoteNotifications];</span>

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        NSString *token=[NSString stringWithFormat:@"%@",deviceToken];
        token=[token stringByReplacingOccurrencesOfString:@"<" withString:@""];
        token=[token stringByReplacingOccurrencesOfString:@">" withString:@""];
        token=[token stringByReplacingOccurrencesOfString:@" " withString:@""];
        
    }
    

    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
       
    }


    iOS7通知代理方法

    iOS6的通知代理方法

    后来又增加了本地通知的代理方法

    添加本地推送的通知代理方法

    iOS8的推送代理方法只有两个了

    iOS 8推送的通知代理方法

    - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void (^)())completionHandler
    {
    }
    
    - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler
    {
    }
    
    - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void (^)())completionHandler
    {
        if ([identifier isEqualToString:@"RickAction"]) {
            [self handleAcceptActionWithNotification:notification];
        }
        completionHandler();
    }
    
    - (void)handleAcceptActionWithNotification:(UILocalNotification*)notification
    {
    }

    地理位置推送

    这个推送是新的API才有的特性,必须配合CLLocation定位一起使用。

    //Location Notification
        CLLocationManager *locMan = [[CLLocationManager alloc] init];
        locMan.delegate = self;
        [locMan requestWhenInUseAuthorization];
    
    #pragma mark - CLLocationManager
    
    - (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
    
    {
        BOOL canUseLocationNotifications = (status == kCLAuthorizationStatusAuthorizedWhenInUse);
        if (canUseLocationNotifications) {
            [self startShowLocationNotification];
        }
    }
    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
    
    {
        CLRegion *region = notification.region;
        if (region) {
        }
    }
    
    - (void)startShowLocationNotification
    
    {
        CLLocationCoordinate2D local2D ;
        local2D.latitude = 123.0;
        local2D.longitude = 223.0;
        UILocalNotification *locNotification = [[UILocalNotification alloc] init];
        locNotification.alertBody = @"你接收到了";
        locNotification.regionTriggersOnce = YES;
        locNotification.region = [[CLCircularRegion alloc] initWithCenter:local2D radius:45 identifier:@"local-identity"];
        [[UIApplication sharedApplication] scheduleLocalNotification:locNotification];
    }

    如果没有开启Core Location 那么上面的didReceiveLocalNotification不会被调用

    最后再总结一下,整个推送流程我觉得是这样子的,先注册推送,然后推送消息,客户端接收推送消息,执行推送行为。如果有错误,还请在文章下面评论,欢迎指正。

    推送的流程


    这个博客写的也不错:http://blog.csdn.net/yujianxiang666/article/details/35260135
    展开全文
  • iOS8开发之iOS8的UIAlertController

    千次阅读 2014-12-15 21:40:51
    iOS8之前用UIActionSheet和UIAlertView来提供按钮选择和提示性信息,比如UIActionSheet可以这样写: UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"title,nil时不显示

    在iOS8之前用UIActionSheet和UIAlertView来提供按钮选择和提示性信息,比如UIActionSheet可以这样写:

     UIActionSheet *actionSheet = [[UIActionSheet alloc]  
                                      initWithTitle:@"title,nil时不显示"  
                                      delegate:self  
                                      cancelButtonTitle:@"取消"  
                                      destructiveButtonTitle:@"确定"  
                                      otherButtonTitles:@"第一项", @"第二项",nil];  
        actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;  
        [actionSheet showInView:self.view];

    然后在协议中实现代理:

    (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex  
    {  
        if (buttonIndex == 0) {  
            NSLog(@"确定");  
        }else if (buttonIndex == 1) {  
            NSLog(@"第一项");  
        }else if(buttonIndex == 2) {  
            NSLog(@"第二项");  
        }else if(buttonIndex == actionSheet.cancleButtonIndex) {  
            NSLog(@"取消");  
        }   
      
    }  
    - (void)actionSheetCancel:(UIActionSheet *)actionSheet{    
      
    }    
    -(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{    
      
    }    
    -(void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex{    
      
    }  

    如果需要修改按钮字体、颜色等可以实现以下代理:

    - (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
        for (UIView *subViwe in actionSheet.subviews) {
            if ([subViwe isKindOfClass:[UILabel class]]) {
                UILabel *label = (UILabel *)subViwe;
                label.font = [UIFont systemFontOfSize:16];
                label.frame = CGRectMake(CGRectGetMinX(label.frame), CGRectGetMinY(label.frame), CGRectGetWidth(label.frame), CGRectGetHeight(label.frame)+20);
            }
            if ([subViwe isKindOfClass:[UIButton class]]) {
                UIButton *button = (UIButton*)subViwe;
                if ([button.titleLabel.text isEqualToString:@"确定"]) {
                    [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
                } else {
                    [button setTitleColor:[WTDevice getGreenColor] forState:UIControlStateNormal];
                }
                button.titleLabel.font = [UIFont systemFontOfSize:18];
            }
        }
    }

    以上代码(代理部分),在ios7及以下版本中是有效的,但是在iOS8中却不起作用,因为iOS8抛弃了UIActionSheet和UIAlertView,取而代之的是UIAlertController,其使用方法如下(代替UIAlertView):

    #ifdef __IPHONE_8_0
            if (TARGET_IS_IOS8) {
                UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:@"提示"
                                                                                               message:@"需要设置允许访问相机,操作方法见“设置”->“帮助中心”"
                                                                                        preferredStyle:UIAlertControllerStyleAlert];
                UIAlertAction *actionCancel = [UIAlertAction actionWithTitle:@"确定"
                                                                       style:UIAlertActionStyleDestructive
                                                                     handler:^(UIAlertAction * action) {}];
                
                [actionSheetController addAction:actionCancel];
                [actionSheetController.view setTintColor:[WTDevice getGreenColor]];
                [self presentViewController:actionSheetController animated:YES completion:nil];
            }
    #endif
            if (TARGET_NOT_IOS8) {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"需要设置允许访问相机,操作方法见“设置”->“帮助中心”" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:nil];
                [alert show];
            }

    代替UIActionSheet:

    #ifdef __IPHONE_8_0
        if (TARGET_IS_IOS8) {
            UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:@"action选项"
                                                                                           message:nil
                                                                                    preferredStyle:UIAlertControllerStyleActionSheet];
            UIAlertAction *action0 = [UIAlertAction actionWithTitle:@"选项一"
                                                             style:UIAlertActionStyleDefault
                                                           handler:^(UIAlertAction * action) {
                                                               [self customMethod1];
                                                           }];
            [actionSheetController addAction:action0];
            
            UIAlertAction *action = [UIAlertAction actionWithTitle:@"选项二"
                                                             style:UIAlertActionStyleDefault
                                                           handler:^(UIAlertAction * action) {
                                                               [self <span style="font-family: Arial, Helvetica, sans-serif;">customMethod2</span>];
                                                           }];
            UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"选项三"
                                                              style:UIAlertActionStyleDefault
                                                            handler:^(UIAlertAction * action) {
                                                                [self customMethod3];
                                                            }];
            UIAlertAction *actionCancel = [UIAlertAction actionWithTitle:@"取消"
                                                                   style:UIAlertActionStyleCancel
                                                                 handler:^(UIAlertAction * action) {}];
            
            [actionSheetController addAction:action];
            [actionSheetController addAction:action1];
            [actionSheetController addAction:actionCancel];
            [actionSheetController.view setTintColor:[UIColor greenColor]];
            [self presentViewController:actionSheetController animated:YES completion:nil];
        }
    #endif
        if (TARGET_NOT_IOS8) {
            UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:@"action选项" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"选项一",@"选项二",@"选项三", nil];
            [as showInView:self.view];
        }

    至于两者的区别,可以看到,iOS8之前是在controller的view上边又覆盖了一层view,iOS8之后则是present了一个controller并且将代理换成了block,代码显得更加紧凑。

    展开全文
  • 只有在iOS8版本会出现,iOS8以上都没有问题,打断点,- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 函数也没进,这是什么问题呢?求大神告知
  • 首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发。 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户的顶层,分为...
  • iOS8 遇到的问题

    千次阅读 2014-09-22 16:02:47
    1、不能定位打勾 设置- 隐私-定位...原来iOS8需要一些方法。。。如果需要仅在前台定位,你在调用startUpdatingLocation 前需要调用requestWhenInUseAuthorization如果需要在前后台定位,你在调用startUpdatingLocation
  • There seems to be an issue in the CoreBluetooth framework that us causing all readRSSI() requests to never trigger the new iOS 8 delegate peripheral(peripheral: CBPeripheral!, didReadRSSI RSSI: ...
  • 使用新版的支付宝sdk,支持64位的,但在使用的时候,如果有装支付宝APP的话,跳转会报错闪退: ...机子不装支付宝app的话又不会报错,正常跳转支付宝网页版,ios7系统下正常,只有ios8会,支付宝版本是2.1.2求助
  • iOS8沙盒路径问题

    千次阅读 2016-06-12 11:24:56
    但在iOS8中,倘若再抱有此思想,我想只会碰壁。1.在iOS8之前,我们获取到沙盒中的document、cache、tmp之后,下一次模拟器或真机无论怎样重启,这具体的路径是固定的了。(下面我们以Document为例介绍)///Users/...
  • Apple在北京时间2014年6月3日凌晨发布了iOS8。这次更新在界面上看上去几乎没有修改,不过对于开发者,iOS8是一次重大的变革。最近新接了一项iOS的开发任务,需要用UIWebView进行页面的渲染。做过iOS的都知道,使用...
  • iOS 8 Size Classes初探

    千次阅读 2014-09-17 17:46:13
    iOS 8 Size Classes初探发布于:2014-09-12 11:00阅读数:9872iOS8新特性:Size Classes,是对老式UI思路的全新抽象:把各个设备屏幕(iphone4,5,6, ipad,iwatch?)以及它们的屏幕旋转状态都抽象成屏幕Size的变化,...
  • iOS-设置导航栏颜色(iOS8+)

    千次阅读 2016-06-15 14:19:05
    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
  • iOS7,iOS8,iOS9适配

    2015-11-15 18:36:28
    1.iOS8新增框架: 1.HealthKit 2.HomeKit 3.CloudKit 4.WebKit 2.Size Classes:将屏幕分类(配合autolayout使用) 3.UIAlertController:替代了 UIAlertView和UIActionSheet 4.App Extensions 是iOS8新开放的一...
  • ios8之前都是用UISearchBar + UISearchDisplayController,但是在ios8之后,UISearchDisplayController就无法使用了。 那我们写程序的时候,怎么设置才能保证搜索框在每个版本都能使用?
  • 这一话我们要添加一个导航栏,添加导航控制器需要在初始化的时候添加。打开类AppDelegate,会看到一个叫application的方法。
  • iOS App Icons for iOS 8

    2015-02-04 11:00:42
    Making iOS App Icons for iOS 8 According to Apple’s iOS Human Interface Guidelines, every app must provide an icon to be displayed on a device’s Homescreen and in the App Store. An app should ...
  • iOS8 UIApplicationOpenSettingsURLString

    千次阅读 2015-01-15 15:18:50
    iOS8发布以后,Apple有开放了此权限,你可以使用UIApplicationOpenSettingsURLString打开当前App的设置界面,代码非常简单,如下: [[UIApplication sharedApplication] openURL:[NSURL URLWith
  • iOS历史回顾(iOS1~iOS8

    万次阅读 2014-09-27 23:37:07
    历史对比
  • iOS 8 Extensions

    千次阅读 2014-08-20 17:52:41
    注:转自
  • 现在的设计语言相对之前大为简化,能够让设计师将精力集中到动画和功能上,而不是繁复的视觉...要我说,虽然没有捷径,但确实有几个适用于iOS的设计技巧和规则能够从全局角度改变你的设计方式。当然,即便你目前的设计
  • iOS 8自适应高度单元格问题

    万次阅读 2015-12-11 09:40:13
    iOS 8 中通过UITableViewAutomaticDimension 常量支持自适应高度的单元格(iOS 7 就要麻烦得多)。但是在实际应用中,我们需要注意以下几个问题:1、 设置好模板单元格的自动布局 模板单元格中,subviews的自动局部...
  • iOS8自适应布局视频教程

    千次阅读 2015-06-03 19:41:05
    链接:http://www.elsyy.com/course/6480这是颐和园最近录制的iOS8视频课程,介绍iOS8中出现的自适应布局。本教程可与颐和园的新书《ios8 swift编程指南》(即将面世)配合使用。
  • iOS8通讯录信息读取兼容

    千次阅读 2014-11-21 17:01:43
    iOS8通讯录信息读取兼容
  • iOS8 UILocalNotification 增加启动授权

    千次阅读 2015-07-08 23:11:26
    好久没接入UILocalNotification了,今天接入时发现没有权限启动通知。 错误如下:Attempting to schedule a local notification <UIConcreteLocalNotification: 0x174178540>{fire date = (null), time zone = ...

空空如也

1 2 3 4 5 ... 20
收藏数 33,483
精华内容 13,393
关键字:

ios8