天天看点

ios7 新特性

ios7 新特性

小引

大家都知道iOS 7做了很大的调整,当然也有一些轻微的修改,我们来稍微看一下吧。

注:本文译自iOS 7 Additions: OMG Finally!

目录

Message UI Framework(在消息中添加文件)

Media Player Framework(MPVolumeView – 检测airplay和当前airplay的route)

AVFoundation(条码扫描)

更多

Message UI Framework(在消息中添加文件)

在iOS 7之前我们可以使用MFMessageComposeViewController来撰写文本消息,但是要想添加文件是不可能做到的,不过在iOS 7中我们可以使用这个方法就能添加文件了:

- (BOOL)addAttachmentData:(NSData *)attachmentData typeIdentifier:(NSString *)uti filename:(NSString *)filename;
           

如下代码示例所示:

if ([MFMessageComposeViewController canSendText] && [MFMessageComposeViewController canSendAttachments] && [MFMessageComposeViewController isSupportedAttachmentUTI:(NSString *)kUTTypePNG]) {
    MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc] init];
    vc.messageComposeDelegate = self;
    vc.recipients = @[@"Yawkey"];
    UIImage *myImage = [UIImage imageNamed:@"Yawkey_business_dog.png"];
    BOOL attached = [vc addAttachmentData:UIImagePNGRepresentation(myImage) typeIdentifier:(NSString*)kUTTypePNG filename:@"Yawkey_business_dog.png"];
    if (attached) {
        NSLog(@"Attached (:");
    }
    else {
        NSLog(@"Not attached ):");
    }
    [self presentViewController:vc animated:YES completion:nil];
}
           
ios7 新特性

Media Player Framework(MPVolumeView – 检测airplay和当前airplay的route)

MPVolumeView可以帮助我们与AirPlay系统进行交互。不过,一直以来都是很难获得用户选择操作的信息。现在通过新增的两个属性和通知,我们可以更加深入的了解AirPlay系统了。

@property areWirelessRoutesAvailable;
@property isWirelessRouteActive;
           

这两个属性可以告诉我们是否有可用的AirPlay,以及是否以及被选中了。下面两个是通知:

NSString *const MPVolumeViewWirelessRoutesAvailableDidChangeNotification;
NSString *const MPVolumeViewWirelessRouteActiveDidChangeNotification;
           

通过这两个通知我们可以知道可用AirPlay发生了改变,以及用户修改了当前正在使用的AirPlay route。

AVFoundation(条码扫描)

AVFoundation中现在已经内置支持一维和二维码的扫描。之前要想在iOS程序中读取条形码和QR码,则需要使用第三方库,例如ZXing和ZBar。在iOS 7中默认支持4中机器条码,需要做的就是将AVCaptureMetadataOutput hook up到AVCaptureSession。另外可以对AVCaptureMetadataOutput进行配置以检测如下这些任意机器可读的条码类型:

AVMetadataObjectTypeUPCECode
AVMetadataObjectTypeCode39Code
AVMetadataObjectTypeCode39Mod43Code
AVMetadataObjectTypeEAN13Code
AVMetadataObjectTypeEAN8Code
AVMetadataObjectTypeCode93Code
AVMetadataObjectTypeCode128Code
AVMetadataObjectTypePDF417Code
AVMetadataObjectTypeQRCode
AVMetadataObjectTypeAztecCode
           

当配置好AVCaptureMetadataOutputObjectsDelegate,就可以响应

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection;
           

检测到的所有条码。

更多

上面只是列出了少许新内容,你可以通过苹果提供的文档What’s New in iOS 查阅更多相关内容。

注:本文是iOS 7开发者指南中的11篇中的第1篇。你可以在这里看到指南的全部内容。

继续阅读