Skip to content

Instantly share code, notes, and snippets.

View AnYuan's full-sized avatar
🎯
Focusing

Anyuan AnYuan

🎯
Focusing
View GitHub Profile
@AnYuan
AnYuan / SwiftAppGroupShareData
Last active August 29, 2015 14:17
WatchKit read and write data in shared container
//file
let identifier = "group.com.baidu.documents"
var sharedContainerURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier(identifier)
if let sharedContainerURL = sharedContainerURL {
let documentURL = sharedURL. URLByAppendingPathComponent("UserData.json")
let data = ... // Some JSON data.
// Write data to disk
}
//Core Data and SQLite
@AnYuan
AnYuan / SwiftSharedManager
Last active August 29, 2015 14:17
Swift singleton
//before Swift 1.2
private let sharedInstance = MyManager()
class MyManager {
class var sharedManager: MyManager {
return sharedInstance
}
}
//Swift 1.2
//Swift 1.2之前还不支持static let 和 static var 这样的存储类变量。但是1.2中Swift添加了类变量的支持--by onevcat
@AnYuan
AnYuan / WatchKit calculate the image size you need
Last active August 29, 2015 14:17
WatchKit calculate the image size you need
//AVFoundation Method
let size = AVMakeRectWithAspectRatioInsideRect(image.size, contentFrame).size
//Helper Methods
func sizeWithAspectRatioInsideRect(aspectRatio: CGSize, boundingRect: CGRect) -> CGSize {
let widthRatio = boundingRect.size.width / aspectRatio.width
let heightRatio = boundingRect.size.height / aspectRatio.height
let ratio = min(widthRatio, heightRatio)
let transform = CGAffineTransformMakeScale(ratio, ratio)
return CGSizeApplyAffineTransform(aspectRatio, transform)
@AnYuan
AnYuan / DawinNotificationHelper.h
Created April 5, 2015 10:10
DawinNotificationHelper
//
// DarwinNotificationHelper.h
// MeatCooker
//
// Created by Jack Wu on 2015-02-02.
// Copyright (c) 2015 Ray Wenderlich. All rights reserved.
//
#import <Foundation/Foundation.h>
@AnYuan
AnYuan / DarwinNotificationHelper.m
Created April 5, 2015 10:11
DarwinNotificationHelper
//
// DarwinNotificationHelper.m
// MeatCooker
//
// Created by Jack Wu on 2015-02-02.
// Copyright (c) 2015 Ray Wenderlich. All rights reserved.
//
#import "DarwinNotificationHelper.h"
@AnYuan
AnYuan / AYWatchDeviceCacheHelper.h
Last active August 29, 2015 14:19
WatchKit device cache helper
#import <Foundation/Foundation.h>
#import <WatchKit/WatchKit.h>
@interface AYWatchDeviceCacheHelper : NSObject
+ (void)addImageToCache:(UIImage *)image
imageName:(NSString *)name;
+ (BOOL)cacheContainsImageName:(NSString *)imageName;
@end
@AnYuan
AnYuan / AYWatchDeviceCacheHelper.m
Created April 13, 2015 10:18
WatchKit device cache helper
#import "AYWatchDeviceCacheHelper.h"
@implementation AYWatchDeviceCacheHelper
+ (void)addImageToCache:(UIImage *)image
imageName:(NSString *)name
{
WKInterfaceDevice *device = [WKInterfaceDevice currentDevice];
while ([device addCachedImage:image name:name] == NO) {
BOOL success = [[self class] removeRandomImageFromCache];
@AnYuan
AnYuan / SwiftBase64.swift
Last active September 8, 2015 12:43
Swift base64 encode and decode
let utf8str: NSData = str.dataUsingEncoding(NSUTF8StringEncoding)
let utf8str = str.dataUsingEncoding(NSUTF8StringEncoding)
let base64Encoded:NSString = utf8str.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!)
let base64Encoded = utf8str.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!)
let data: NSData = NSData(base64EncodedString: base64Encoded, options: NSDataBase64DecodingOptions.fromRaw(0)!)
let data = NSData(base64EncodedString: base64Encoded, options: NSDataBase64DecodingOptions.fromRaw(0)!)
let base64Decoded: NSString = NSString(data: data, encoding: NSUTF8StringEncoding)
@AnYuan
AnYuan / VideoThumbnail.swift
Created November 2, 2015 03:29
Generating Thumbnails from Videos
import AVFoundation
if let asset = AVAsset(URL: videoURL) {
let durationSeconds = CMTimeGetSeconds(asset.duration)
let generator = AVAssetImageGenerator(asset: asset)
generator.appliesPreferredTrackTransform = true
let time = CMTimeMakeWithSeconds(durationSeconds/3.0, 600)
var thumbnailImage: CGImageRef
@AnYuan
AnYuan / SwiftGCDWrapper.swift
Created February 1, 2016 13:09
Swift GCD wrapper
protocol ExcutableQueue {
var queue: dispatch_queue_t { get }
}
extension ExcutableQueue {
func execute(closure: () -> Void) {
dispatch_async(queue, closure)
}
}