mirror of
https://github.com/zhigang1992/Kingfisher.git
synced 2026-01-12 09:04:37 +08:00
Merge branch 'master' into swift3
# Conflicts: # Demo/Kingfisher-Demo/ViewController.swift # Demo/Kingfisher-macOS-Demo/ViewController.swift # Kingfisher.xcodeproj/project.pbxproj # Sources/ImageView+Kingfisher.swift # Sources/NSButton+Kingfisher.swift # Tests/KingfisherTests/ImageViewExtensionTests.swift
This commit is contained in:
@@ -2,6 +2,13 @@
|
||||
|
||||
-----
|
||||
|
||||
## [2.6.0 - Indicator Customization](https://github.com/onevcat/Kingfisher/releases/tag/2.6.0) (2016-09-12)
|
||||
|
||||
#### Add
|
||||
* Support for different types of indicators, including gif images. [#425](https://github.com/onevcat/Kingfisher/pull/425)
|
||||
|
||||
---
|
||||
|
||||
## [2.5.1 - Prefetcher Trap](https://github.com/onevcat/Kingfisher/releases/tag/2.5.1) (2016-09-06)
|
||||
|
||||
#### Fix
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.5.1</string>
|
||||
<string>2.6.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>707</string>
|
||||
<string>718</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.5.1</string>
|
||||
<string>2.6.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>707</string>
|
||||
<string>718</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.5.1</string>
|
||||
<string>2.6.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>707</string>
|
||||
<string>718</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.5.1</string>
|
||||
<string>2.6.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>707</string>
|
||||
<string>718</string>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionAttributes</key>
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.5.1</string>
|
||||
<string>2.6.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>707</string>
|
||||
<string>718</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Pod::Spec.new do |s|
|
||||
|
||||
s.name = "Kingfisher"
|
||||
s.version = "2.5.1"
|
||||
s.version = "2.6.0"
|
||||
s.summary = "A lightweight and pure Swift implemented library for downloading and cacheing image from the web."
|
||||
|
||||
s.description = <<-DESC
|
||||
@@ -36,11 +36,12 @@ Pod::Spec.new do |s|
|
||||
s.public_header_files = ["Sources/Kingfisher.h"]
|
||||
|
||||
s.osx.exclude_files = ["Sources/AnimatedImageView.swift", "Sources/UIButton+Kingfisher.swift"]
|
||||
s.watchos.exclude_files = ["Sources/AnimatedImageView.swift", "Sources/UIButton+Kingfisher.swift", "Sources/ImageView+Kingfisher.swift", "Sources/NSButton+Kingfisher.swift"]
|
||||
s.watchos.exclude_files = ["Sources/AnimatedImageView.swift", "Sources/UIButton+Kingfisher.swift", "Sources/ImageView+Kingfisher.swift", "Sources/NSButton+Kingfisher.swift", "Sources/Indicator.swift"]
|
||||
s.ios.exclude_files = "Sources/NSButton+Kingfisher.swift"
|
||||
s.tvos.exclude_files = "Sources/NSButton+Kingfisher.swift"
|
||||
|
||||
s.requires_arc = true
|
||||
s.framework = "CFNetwork"
|
||||
|
||||
s.pod_target_xcconfig = { 'SWIFT_VERSION' => '2.3' }
|
||||
end
|
||||
|
||||
16
Sources/Box.swift
Normal file
16
Sources/Box.swift
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// Box.swift
|
||||
// Kingfisher
|
||||
//
|
||||
// Created by WANG WEI on 2016/09/12.
|
||||
// Copyright © 2016年 Wei Wang. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class Box<T> {
|
||||
let value: T
|
||||
init(value: T) {
|
||||
self.value = value
|
||||
}
|
||||
}
|
||||
176
Sources/Indicator.swift
Normal file
176
Sources/Indicator.swift
Normal file
@@ -0,0 +1,176 @@
|
||||
//
|
||||
// Indicator.swift
|
||||
// Kingfisher
|
||||
//
|
||||
// Created by João D. Moreira on 30/08/16.
|
||||
//
|
||||
// Copyright (c) 2016 Wei Wang <onevcat@gmail.com>
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#if os(OSX)
|
||||
import AppKit
|
||||
#else
|
||||
import UIKit
|
||||
#endif
|
||||
|
||||
#if os(OSX)
|
||||
public typealias IndicatorView = NSView
|
||||
#else
|
||||
public typealias IndicatorView = UIView
|
||||
#endif
|
||||
|
||||
// MARK: - Indicator Protocol
|
||||
public protocol Indicator {
|
||||
func startAnimatingView()
|
||||
func stopAnimatingView()
|
||||
|
||||
var viewCenter: CGPoint { get set }
|
||||
var view: IndicatorView { get }
|
||||
}
|
||||
|
||||
extension Indicator {
|
||||
#if os(OSX)
|
||||
var viewCenter: CGPoint {
|
||||
get {
|
||||
let frame = view.frame
|
||||
return CGPoint(x: frame.origin.x + frame.size.width / 2.0, y: frame.origin.y + frame.size.height / 2.0 )
|
||||
}
|
||||
set {
|
||||
let frame = view.frame
|
||||
let newFrame = CGRect(x: newValue.x - frame.size.width / 2.0,
|
||||
y: newValue.y - frame.size.height / 2.0,
|
||||
width: frame.size.width,
|
||||
height: frame.size.height)
|
||||
view.frame = newFrame
|
||||
}
|
||||
}
|
||||
#else
|
||||
var viewCenter: CGPoint {
|
||||
get {
|
||||
return view.center
|
||||
}
|
||||
set {
|
||||
view.center = newValue
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// MARK: - ActivityIndicator
|
||||
// Displays a NSProgressIndicator / UIActivityIndicatorView
|
||||
struct ActivityIndicator: Indicator {
|
||||
|
||||
#if os(OSX)
|
||||
private let activityIndicatorView: NSProgressIndicator
|
||||
#else
|
||||
private let activityIndicatorView: UIActivityIndicatorView
|
||||
#endif
|
||||
|
||||
var view: IndicatorView {
|
||||
return activityIndicatorView
|
||||
}
|
||||
|
||||
func startAnimatingView() {
|
||||
#if os(OSX)
|
||||
activityIndicatorView.startAnimation(nil)
|
||||
#else
|
||||
activityIndicatorView.startAnimating()
|
||||
#endif
|
||||
activityIndicatorView.hidden = false
|
||||
}
|
||||
|
||||
func stopAnimatingView() {
|
||||
#if os(OSX)
|
||||
activityIndicatorView.stopAnimation(nil)
|
||||
#else
|
||||
activityIndicatorView.stopAnimating()
|
||||
#endif
|
||||
activityIndicatorView.hidden = true
|
||||
}
|
||||
|
||||
init() {
|
||||
#if os(OSX)
|
||||
activityIndicatorView = NSProgressIndicator(frame: CGRect(x: 0, y: 0, width: 16, height: 16))
|
||||
|
||||
#if swift(>=2.3)
|
||||
activityIndicatorView.controlSize = .Small
|
||||
#else
|
||||
activityIndicatorView.controlSize = .SmallControlSize
|
||||
#endif
|
||||
activityIndicatorView.style = .SpinningStyle
|
||||
#else
|
||||
#if os(tvOS)
|
||||
let indicatorStyle = UIActivityIndicatorViewStyle.White
|
||||
#else
|
||||
let indicatorStyle = UIActivityIndicatorViewStyle.Gray
|
||||
#endif
|
||||
activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle:indicatorStyle)
|
||||
activityIndicatorView.autoresizingMask = [.FlexibleLeftMargin, .FlexibleRightMargin, .FlexibleBottomMargin, .FlexibleTopMargin]
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - ImageIndicator
|
||||
// Displays an ImageView. Supports gif
|
||||
struct ImageIndicator: Indicator {
|
||||
private let animatedImageIndicatorView: ImageView
|
||||
|
||||
var view: IndicatorView {
|
||||
return animatedImageIndicatorView
|
||||
}
|
||||
|
||||
init(imageData data: NSData) {
|
||||
|
||||
let image = Image.kf_imageWithData(data, scale: 1.0, preloadAllGIFData: true)
|
||||
animatedImageIndicatorView = ImageView()
|
||||
animatedImageIndicatorView.image = image
|
||||
|
||||
#if os(OSX)
|
||||
// Need for gif to animate on OSX
|
||||
self.animatedImageIndicatorView.imageScaling = .ScaleNone
|
||||
self.animatedImageIndicatorView.canDrawSubviewsIntoLayer = true
|
||||
#else
|
||||
animatedImageIndicatorView.contentMode = .Center
|
||||
|
||||
animatedImageIndicatorView.autoresizingMask = [.FlexibleLeftMargin,
|
||||
.FlexibleRightMargin,
|
||||
.FlexibleBottomMargin,
|
||||
.FlexibleTopMargin]
|
||||
#endif
|
||||
}
|
||||
|
||||
func startAnimatingView() {
|
||||
#if os(OSX)
|
||||
animatedImageIndicatorView.animates = true
|
||||
#else
|
||||
animatedImageIndicatorView.startAnimating()
|
||||
#endif
|
||||
animatedImageIndicatorView.hidden = false
|
||||
}
|
||||
|
||||
func stopAnimatingView() {
|
||||
#if os(OSX)
|
||||
animatedImageIndicatorView.animates = false
|
||||
#else
|
||||
animatedImageIndicatorView.stopAnimating()
|
||||
#endif
|
||||
animatedImageIndicatorView.hidden = true
|
||||
}
|
||||
}
|
||||
@@ -15,11 +15,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.5.1</string>
|
||||
<string>2.6.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>707</string>
|
||||
<string>718</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.5.1</string>
|
||||
<string>2.6.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>707</string>
|
||||
<string>718</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.5.1</string>
|
||||
<string>2.6.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>707</string>
|
||||
<string>718</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.5.1</string>
|
||||
<string>2.6.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>707</string>
|
||||
<string>718</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
BIN
images/loader.gif
Normal file
BIN
images/loader.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
Reference in New Issue
Block a user