Giter Club home page Giter Club logo

navi's Introduction

Navi

Navi is designed for avatar caching, with style.

The name of Navi from movie Avatar.

Requirements

Swift 3.1, iOS 8.0

  • Swift 2.3, use version 0.5.0
  • Swift 3.0, use version 1.1.0

Usage

  1. Make your User conform Avatar protocol.

    protocol Avatar {
    
        var url: URL? { get }
        var style: AvatarStyle { get }
        var placeholderImage: UIImage? { get }
        var localOriginalImage: UIImage? { get }
        var localStyledImage: UIImage? { get }
    
        func save(originalImage: UIImage, styledImage: UIImage)
    }
  2. And, set avatar for your avatarImageView

    avatarImageView.navi_setAvatar(userAvatar)

Check the demo for more information.

另有中文介绍

Installation

Carthage

github "nixzhu/Navi"

CocoaPods

pod 'Navi'

Contact

NIX @nixzhu

License

Navi is available under the MIT license. See the LICENSE file for more info.

navi's People

Contributors

nixzhu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

navi's Issues

Gray color space model support

CGBitmapContextCreate: unsupported parameter combination:
8 integer bits/component;
16 bits/pixel;
Gray color space model; kCGImageAlphaPremultipliedFirst;
416 bytes/row.
Valid parameters for Gray color space model are:
8 bits per pixel, 8 bits per component, kCGImageAlphaNone
8 bits per pixel, 8 bits per component, kCGImageAlphaOnly
16 bits per pixel, 16 bits per component, kCGImageAlphaNone
32 bits per pixel, 32 bits per component, kCGImageAlphaNone|kCGBitmapFloatComponents
See Quartz 2D Programming Guide (available online) for more information.
Oct 21 10:34:19 LuooFM[6518] : CGContextDrawImage: invalid context 0x0. Backtrace:
<TToFE4NaviCSo7UIImage19navi_imageWithAlphafS0_FT_S0+34>
<TFE4NaviCSo7UIImage26navi_roundWithCornerRadiusfS0_FTV12CoreGraphics7CGFloat11borderWidthS2__GSqS0_+66>
<TToFE4NaviCSo7UIImage26navi_roundWithCornerRadiusfS0_FTV12CoreGraphics7CGFloat11borderWidthS2__GSqS0_+54>
<TFE4NaviCSo7UIImage25navi_avatarImageWithStylefS0_FOS_11AvatarStyleS0+805>
<TFFFFC4Navi9AvatarPodP33_8B0B5A6784EFC9FC4DDC7EE8BE0D2AF923completeRequestsWithURLFS0_FTCSo5NSURL5imageCSo7UIImage_T_U
<TTRXFo__dT__XFdCb__dT_+39>
<_dispatch_call_block_and_release+12>
<_dispatch_client_callout+8>
<_dispatch_root_queue_drain+1829>
<dispatch_worker_thread3+111>
<pthread_wqthread+1129>
Oct 21 10:34:19 LuooFM[6518] : CGBitmapContextCreateImage: invalid context 0x0. Backtrace:
<TFE4NaviCSo7UIImage19navi_imageWithAlphafS0_FT_S0+811>
<TToFE4NaviCSo7UIImage19navi_imageWithAlphafS0_FT_S0+34>
<TFE4NaviCSo7UIImage26navi_roundWithCornerRadiusfS0_FTV12CoreGraphics7CGFloat11borderWidthS2__GSqS0
+66>
<TToFE4NaviCSo7UIImage26navi_roundWithCornerRadiusfS0_FTV12CoreGraphics7CGFloat11borderWidthS2__GSqS0
+54>
<TFE4NaviCSo7UIImage25navi_avatarImageWithStylefS0_FOS_11AvatarStyleS0+805>
<TFFFFC4Navi9AvatarPodP33_8B0B5A6784EFC9FC4DDC7EE8BE0D2AF923completeRequestsWithURLFS0_FTCSo5NSURL5imageCSo7UIImage_T_U
<TTRXFo__dT__XFdCb__dT
+39>
<_dispatch_call_block_and_release+12>
<_dispatch_client_callout+8>
<_dispatch_root_queue_drain+1829>
<_dispatch_worker_thread3+111>
<_pthread_wqthread+1129>

闪退问题

你好,之前未更新iOS10的时候,我这里就有一个用户头像不能被修改,其他的用户头像被我修改成了圆形,只有它不变,更新iOS之后,一到显示这个用户的头像时就会闪退,请问这是什么问题。

RGB color space model; kCGImageAlphaLast;

CGBitmapContextCreate: unsupported parameter combination:
8 integer bits/component;
32 bits/pixel;
RGB color space model; kCGImageAlphaLast;
800 bytes/row.
Valid parameters for RGB color space model are:
16 bits per pixel, 5 bits per component, kCGImageAlphaNoneSkipFirst
32 bits per pixel, 8 bits per component, kCGImageAlphaNoneSkipFirst
32 bits per pixel, 8 bits per component, kCGImageAlphaNoneSkipLast
32 bits per pixel, 8 bits per component, kCGImageAlphaPremultipliedFirst
32 bits per pixel, 8 bits per component, kCGImageAlphaPremultipliedLast
64 bits per pixel, 16 bits per component, kCGImageAlphaPremultipliedLast
64 bits per pixel, 16 bits per component, kCGImageAlphaNoneSkipLast
128 bits per pixel, 32 bits per component, kCGImageAlphaNoneSkipLast |kCGBitmapFloatComponents
128 bits per pixel, 32 bits per component, kCGImageAlphaPremultipliedLast |kCGBitmapFloatComponents
See Quartz 2D Programming Guide (available online) for more information.
Oct 21 11:23:51 LuooFM[19236] : CGContextConcatCTM: invalid context 0x0. Backtrace:
<TToFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize13withTransformVSC17CGAffineTransform14drawTransposedSb20interpolat
<TFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize24withInterpolationQualityOSC22CGInterpolationQuality_GSqS0
+495>
<TToFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize24withInterpolationQualityOSC22CGInterpolationQuality_GSqS0_+60>
<TFE4NaviCSo7UIImage23navi_centerCropWithSizefS0_FVSC6CGSizeGSqS0_+697>
<TToFE4NaviCSo7UIImage23navi_centerCropWithSizefS0_FVSC6CGSizeGSqS0_+54>
<TFE4NaviCSo7UIImage25navi_avatarImageWithStylefS0_FOS_11AvatarStyleS0+733>
<TFFFFC4Navi9AvatarPodP33_8B0B5A6784EFC9FC4DDC7EE8BE0D2AF923completeRequestsWithURLFS0_FTCSo5NSURL5imageCSo7UIImage_T
<TTRXFo__dT__XFdCb__dT_+39>
<_dispatch_call_block_and_release+12>
<dispatch_client_callout+8>
<dispatch_root_queue_drain+1829>
<dispatch_worker_thread3+111>
<pthread_wqthread+1129>
Oct 21 11:23:51 LuooFM[19236] : CGContextSetInterpolationQuality: invalid context 0x0. Backtrace:
<TToFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize13withTransformVSC17CGAffineTransform14drawTransposedSb20interpolat
<TFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize24withInterpolationQualityOSC22CGInterpolationQuality_GSqS0
+495>
<TToFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize24withInterpolationQualityOSC22CGInterpolationQuality_GSqS0
+60>
<TFE4NaviCSo7UIImage23navi_centerCropWithSizefS0_FVSC6CGSizeGSqS0
+697>
<TToFE4NaviCSo7UIImage23navi_centerCropWithSizefS0_FVSC6CGSizeGSqS0
+54>
<TFE4NaviCSo7UIImage25navi_avatarImageWithStylefS0_FOS_11AvatarStyleS0+733>
<TFFFFC4Navi9AvatarPodP33_8B0B5A6784EFC9FC4DDC7EE8BE0D2AF923completeRequestsWithURLFS0_FTCSo5NSURL5imageCSo7UIImage_T
<TTRXFo__dT__XFdCb__dT
+39>
<_dispatch_call_block_and_release+12>
<dispatch_client_callout+8>
<dispatch_root_queue_drain+1829>
<dispatch_worker_thread3+111>
<pthread_wqthread+1129>
Oct 21 11:23:51 LuooFM[19236] : CGContextDrawImage: invalid context 0x0. Backtrace:
<TToFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize13withTransformVSC17CGAffineTransform14drawTransposedSb20interpolat
<TFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize24withInterpolationQualityOSC22CGInterpolationQuality_GSqS0
+495>
<TToFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize24withInterpolationQualityOSC22CGInterpolationQuality_GSqS0
+60>
<TFE4NaviCSo7UIImage23navi_centerCropWithSizefS0_FVSC6CGSizeGSqS0
+697>
<TToFE4NaviCSo7UIImage23navi_centerCropWithSizefS0_FVSC6CGSizeGSqS0
+54>
<TFE4NaviCSo7UIImage25navi_avatarImageWithStylefS0_FOS_11AvatarStyleS0+733>
<TFFFFC4Navi9AvatarPodP33_8B0B5A6784EFC9FC4DDC7EE8BE0D2AF923completeRequestsWithURLFS0_FTCSo5NSURL5imageCSo7UIImage_T
<TTRXFo__dT__XFdCb__dT
+39>
<_dispatch_call_block_and_release+12>
<_dispatch_client_callout+8>
<_dispatch_root_queue_drain+1829>
<dispatch_worker_thread3+111>
<pthread_wqthread+1129>
Oct 21 11:23:51 LuooFM[19236] : CGBitmapContextCreateImage: invalid context 0x0. Backtrace:
<TFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize13withTransformVSC17CGAffineTransform14drawTransposedSb20interpolatio
<TToFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize13withTransformVSC17CGAffineTransform14drawTransposedSb20interpola
<TFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize24withInterpolationQualityOSC22CGInterpolationQuality_GSqS0
+495>
<TToFE4NaviCSo7UIImage17navi_resizeToSizefS0_FTVSC6CGSize24withInterpolationQualityOSC22CGInterpolationQuality_GSqS0
+60
<TFE4NaviCSo7UIImage23navi_centerCropWithSizefS0_FVSC6CGSizeGSqS0+697>
<TToFE4NaviCSo7UIImage23navi_centerCropWithSizefS0_FVSC6CGSizeGSqS0+54>
<TFE4NaviCSo7UIImage25navi_avatarImageWithStylefS0_FOS_11AvatarStyleS0+733>
<TFFFFC4Navi9AvatarPodP33_8B0B5A6784EFC9FC4DDC7EE8BE0D2AF923completeRequestsWithURLFS0_FTCSo5NSURL5imageCSo7UIImage_T
<TTRXFo__dT__XFdCb__dT
+39>
<_dispatch_call_block_and_release+12>
<_dispatch_client_callout+8>
<_dispatch_root_queue_drain+1829>
<_dispatch_worker_thread3+111>
<_pthread_wqthread+1129>

wakeAvatar方法中调用localOriginalImage方法时机

1、在localOriginalImage方法的调用不应该是在localStyledImage之后吗?为什么是在添加sharedInstance.requestPool.addRequest(request)之后,
2、既然在sharedInstance.requestPool.addRequest(request)之后调用localOriginalImage,为什么不在获取image后,执行removeRequest(request)方法,删除请求呢
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.