Ovatar-iOS 1.2

Ovatar-iOS 1.2

Joe Barbour 维护。



Ovatar-iOS 文档

Ovatar 是在客户端中启用头像支持最快、最强大的方式。本文档重点关注内置于 Objective C 的 iOS 框架,但也可以用于 Objective C 和 Swift 项目。在这个文档中,我们将向您展示如何通过我们的超级简化类,只需少量代码即可在几分钟内使您的应用程序获得头像支持。但我们也将进一步详细说明,因为这个框架可以为您提供所有 Ovatar 功能的完全控制权。让我们开始吧…

注册

要开始在任何项目中使用 Ovatar,您必须首先获得一个 应用密钥。这可以通过在 ovatar.io 上注册然后创建一个应用程序来完成。

注意 Ovatar 仍在 BETA 测试中,所以请在遇到任何问题时告诉我们,并且请注意,框架的一些方面可能会在不通知的情况下更改。因此,我们建议使用 coccopods 版本控制。

设置

Ovatar 可以通过下载仓库并添加所有 OvatarIcon 标头和实现文件来手动安装。

或者

通过 Coccopods 添加项目(推荐)

pod 'Ovatar-iOS'

入门

Swift

导入OOvatar

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
    OOvatar.sharedInstance(withAppKey: "app_key")
    OOvatar.sharedInstance().setDebugging(true)
    return true
}

Objective C

#import "OOvatar.h"

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
	[OOvatar sharedInstanceWithAppKey:@"app_key"];
    [[OOvatar sharedInstance] setDebugging:true];
return true;

}

头像图标(简单方式)

为了让您在应用中快速轻松地设置头像,我们设计了 OOvatarIcon。这是一个功能强大的类,可以处理...

  • 从键或查询(电子邮件或电话号码)下载图像
  • 图像缓存
  • 自动重定位和调整图像大小
  • 面部识别
  • 具有进度选择和上传图像
  • 全屏预览
  • 图像大小管理
  • 添加 OvatarIcon

    Swift

    添加 OOvatarIcon 框架

    import OOvatarIcon

    var ovatar: OOvatarIcon?

    	ovatar = OOvatarIcon(frame: CGRect(x: (bounds.size.width / 2) - 100.0, y: (bounds.size.height / 2) - 100.0, width: 200.0, height: 200.0))
        ovatar?.placeholder = UIImage(named: "a_custom_placeholder_image")
        ovatar?.oicondelegate = self
        ovatar?.hasaction = true
        ovatar?.preview = false
        ovatar?.allowsphotoediting = true
        ovatar?.onlyfaces = false
        addSubview(headerOvatar)
        ovatar?.imageDownload(withQuery: "[email protected]")
    

    Objective C

    .h

    添加 OOvatarIcon 框架

    #import "OOvatarIcon/OOvatarIcon.h"

    @property (nonatomic, strong) OOvatarIcon *ovatar;

    .m

         self.ovatar = [[OOvatarIcon alloc] initWithFrame:CGRectMake((self.bounds.size.width / 2) - 100.0, (self.bounds.size.height / 2) - 100.0, 200.0, 200.0)];
         self.ovatar.placeholder = [UIImage imageNamed:@"a_custom_placeholder_image"];
         self.ovatar.oicondelegate = self;
         self.ovatar.hasaction = true;
         self.ovatar.preview = false;    
         self.ovatar.allowsphotoediting = true;
         self.ovatar.onlyfaces = false;     
         [self addSubview:self.headerOvatar];
              
    

    让我们获取那个 Ovatar!

    通过关键字、电子邮件地址或电话号码查询

    Ovatar 允许您轻松查询使用 app_key 上传的图像(键的使用),但您也可以通过 电子邮件地址电话号码 查询 Ovatar 图像,所有这些都可以通过调用实现。

    Swift

    ovatar?.imageDownload(withQuery: "[email protected]")

    Objective C

    [self.ovatar setOvatarImage:@"[email protected]" phonenumber:@"+4477402847283" fullname:@"Tom Hanks" key:@"[upload_key]" originalImage:@"http://mywebsite.com/user/useravatar.jpeg"];

    注意 除了传递查询之外,您还可以添加一个 'name'。这不会通过名称查询用户,但允许您存储用户姓名以供参考,既在 Ovatar 控板 中,也可以在未来调用图像时进行参考。

    注意originalImage 传递原始图像 URL 会首先将此图像迁移到 Ovatar。如果您不想迁移图像,请传递 nil

    Swift

    ovatar?.imageDownload(withQueryียونیک کد با استفاده از URL

    Objective C

    [[self.ovatar imageDownloadWithQuery:@" Brilliant!

    注意 如果你希望查询键和电子邮件地址作为后备,请多次添加此方法。

    Swift

    		ovatar?.imageDownload(withQuery: "[email protected]") //email address query
            ovatar?.imageDownload(withQuery: "+44000000000000")//uk phone number query
            ovatar?.imageDownload(withQuery: "my_uploaded_ovatar_key")//query by key
    	

    Objective C

    		
    		[self.ovatar imageDownloadWithQuery:@"[email protected]"];  //email address query
    		[self.ovatar imageDownloadWithQuery:@"+44000000000000"];  //uk phone number query
    		[self.ovatar imageDownloadWithQuery:@"my_uploaded_ovatar_key"]; //query by key
    	
    默认情况下,类会按键加载图像。如果无法通过键找到图像,则回退到任何查询。

    注意 一些用户报告说这不起作用,这是因为他们在初始化 OOvatarIcon 之前调用了它。请确保您首先将 OOvatarIcon 添加到您的项目。

    设置您自己的图标

    在某些情况下,您可能需要使用来自其他服务的一个头像图标。为此,您可以简单调用

    Swift

    ovatar?.imageSet(UIImage(named: "my_local_image.png"), animated: true)
    

    Objective C

    [self.ovatar imageSet:[UIImage imageNamed:@"my_local_image.png"] animated:TRUE]
    

    手动上传

    我们建议使用 OOvatarIcon 类来选择、管理和上传新图像,但如果您确实想手动上传图像,可以通过调用这种方式来完成。

    Swift

     let imagedata = .uiImageJPEGRepresentation() as? Data
     let metadata = ["copyright": "joe barbour"]
     ovatar?.imageUpdate(withImage: imagedata, info: nil)	
    

    Objective C

    NSData *imagedata = UIImageJPEGRepresentation([UIImage imageNamed:@"my_selected_image.jpg"], 0.8);
    NSDictionary *metadata = @{@"copyright":@"joe barbour"};
    

    [self.ovatar imageUpdateWithImage:imagedata info:nil];

    注意 通过查询 JSON 输出可以返回元数据,这是通过直接调用 OOvatar 类来实现的。下面将做进一步说明。

    OOvatarIcon 的强大功能

    占位符

    如果没有图像可用,可以设置一个占位符图像。这可以通过将占位符设置为 UIImage 来完成。如果没有设置,将使用默认的 ovatar 占位符,但这是通过远程图像请求实现的。我们建议设置自己的占位符,以匹配您的 UI 并避免任何空状态。

    编辑

    在您的应用程序中,有时您会希望用户能够编辑/更改他们的头像,有时则不会。默认情况下,用户将无法与图像交互。但您可以通过将hasaction = true;设置为来更改此设置。当设置为TRUE时,轻触OOvatarIcon将调用ovatarIconWasTappedWithGesture代理方法(有关代理回调的更多信息请参阅下文)或直接从子视图启动默认的iOS相册选择器。默认情况下,将显示相册选择器,但可以通过将presentpicker = false;设置为来禁用它。

    仅人脸

    假设您正在开发一款交友应用?那么您可能不希望用户上传关于他们的狗或假日照片,您想得到他们本人的准确照片。通过将onlyfaces = true;设置为,类会迅速检测所选图片是否包含人脸。如果有,那么图片将会上传;如果用户选择了一幅没有人脸的图片,那么将调用带有ovatarIconUploadFailedWithErrors的代理方法并返回一个NSError。(关于代理回调的更多信息请参阅下文)

    图片编辑

    图片大小由Ovatar直接管理,但裁剪(目前)则不是。为了使操作更简单,您可以将allowsphotoediting = true;设置为,当用户从默认的iOS相册选择器中选择图片时,他们将被提供默认的iOS裁剪工具。在这里,用户可以按需调整图片大小和位置。默认情况下此选项是禁用的。

    动画

    OOvatarIcon使用低级动画,如在加载新图像时使用交叉淡入淡出和图标被轻触时的缩放“弹跳”。所有这些动画都可以通过调用animated = false;来禁用。

    此外,为了更好地控制,您可以修改交叉淡入淡出的持续时间,将其设置为crossfade = 1.0;。默认情况下,这是0.6。

    完整预览

    有时头像图片可能只是作为一个参考点,可能太小看不清楚。启用预览功能后,当用户点击图片时,将能够在全屏中查看头像。这里会自动加载高分辨率的图片。这可以在任何不可编辑的 OOvatarIcon 上启用(hasaction = true;)。默认情况下这是禁用的,但可以通过 preview = true; 启用。

    此外,您还可以在全屏视图中设置自定义标题。这可以是对用户的信息,或者任何其他内容。要添加此设置,请在代码中添加 previewcaption = "This is my Ovatar Caption"

    加载器

    当头像正在下载或上传时,在 OvatarIcon 上会显示一个进度滚动框/条。默认情况下这是启用的,但可以通过 progressloader = false; 禁用。

    委托回调

    为了更精确的控制,OvatarIcon 有 4 个委托回调。要启用这些回调,您必须通过 oicondelegate = self; 声明 OOvatarIcon 为一个委托。

    Swift

    func ovatarIconWasTapped(withGesture gesture: UITapGestureRecognizer?) {
        //Called if the 'presentpicker' BOOL is set to FALSE (by default it is set to TRUE). Here you can set custom actions for the when the Ovatar Icon is tapped.
    }
    

    func ovatarIconWasUpdatedSucsessfully(_ output: [AnyHashable: Any]?) {
        //Called if an image is uploaded successfully.
    }
    

    func ovatarIconUploadFailed() throws {
        //Called if an image cannot be uploaded, see the documentation for error codes.
    }
    

    func ovatarIconUploading(withProgress progress: Float) {
        //Called everytime the progress of the upload changes. The progress with displayed as in double value on a 0-100 scale.
    }
    

    Objective-C

    -(void)ovatarIconWasTappedWithGesture:(UITapGestureRecognizer *)gesture {
        //Called if the 'presentpicker' BOOL is set to FALSE (by default it is set to TRUE). Here you can set custom actions for the when the Ovatar Icon is tapped.
    }   
    

    -(void)ovatarIconWasUpdatedSucsessfully:(NSDictionary *)output {
        //Called if an image is uploaded successfully.
    }
    

    -(void)ovatarIconUploadFailedWithErrors:(NSError *)error {
        //Called if an image cannot be uploaded, see the documentation for error codes.
    }
    

    -(void)ovatarIconUploadingWithProgress:(float)progress {
        //Called everytime the progress of the upload changes. The progress with displayed as in double value on a 0-100 scale.
    }
    

    调试与选项

    以下设置可为您应用的任何位置设置,但我们建议在您的

    名称

    在上传头像时存储用户的完整姓名

    Swift

    OOvatar.sharedInstance().setName("Steve Jobs")

    Objective-C

    [[OOvatar sharedInstance] setName:@"Steve Jobs"];

    调试

    要启用控制台调试,只需进行以下设置

    Swift

    OOvatar.sharedInstance().setDebugging(true)

    Objective-C

    [[OOvatar sharedInstance] setDebugging:true];

    Gravatar 支持

    默认情况下,如果找不到头像,Ovatar 会回退到使用 Gravatar。这可以被禁用。

    Swift

    OOvatar.sharedInstance().setGravatarFallback(false)

    Objective C

    [[OOvatar sharedInstance] setGravatarFallback:false];

    缓存

    当换头像的图片首次下载时,它会被保存到本地缓存中。这样做是为了防止不必要的服务器调用。缓存不可禁用,但可以通过设置以下方式来更改过期时间:

    Swift

    OOvatar.sharedInstance().setCacheExpirySeconds(60 * 60 * 4)//以秒为单位

    Objective C

    [[OOvatar sharedInstance] setCacheExpirySeconds:60*60*4];//以秒为单位