Skip to content

Instantly share code, notes, and snippets.

View maximbilan's full-sized avatar
🧑‍🚒
Working...

Maksym Bilan maximbilan

🧑‍🚒
Working...
View GitHub Profile
@maximbilan
maximbilan / gist:5532309680284cabe4cf
Last active August 29, 2015 14:25
iOS Timer in not main thread
dispatch_source_t CreateDispatchTimer(uint64_t interval, uint64_t leeway, dispatch_queue_t queue, dispatch_block_t block)
{
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
if (timer)
{
dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), interval, leeway);
dispatch_source_set_event_handler(timer, block);
dispatch_resume(timer);
}
return timer;
@maximbilan
maximbilan / gist:105f8289b4e3f5d6cf2c
Last active August 29, 2015 14:25
iOS UIView with gradient
var gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = view.bounds
gradient.colors = [UIColor(rgba: "#71B280").CGColor, UIColor(rgba: "#134E5E").CGColor]
self.view.layer.insertSublayer(gradient, atIndex: 0)
@maximbilan
maximbilan / gist:d081d7058ef0c5b06d27
Last active August 29, 2015 14:25
iOS: idleTimerDisabled = YES works until UIImagePickerController was used
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[self dismissViewControllerAnimated:YES completion:^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[UIApplication sharedApplication].idleTimerDisabled = YES;
});
}];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
self dismissViewControllerAnimated:YES completion:^{
@maximbilan
maximbilan / gist:b7cbd88f4ddac52eec59
Last active August 29, 2015 14:26
UIImage from text
+ (UIImage *)imageFromText:(NSString *)text size:(CGSize)size fontName:(NSString *)fontName maxFontSize:(CGFloat)maxFontSize minFontSize:(CGFloat)minFontSize
{
UIFont *font;
CGSize fontSize;
for (CGFloat maxSize = maxFontSize; maxSize >= minFontSize; maxSize -= 1.f) {
font = [UIFont fontWithName:fontName size:maxSize];
fontSize = [text sizeWithAttributes:@{ NSFontAttributeName : font }];
if (fontSize.width <= size.width) {
@maximbilan
maximbilan / ArrayShuffle.swift
Last active September 15, 2015 15:43
Swift Array Shuffle
import Foundation
extension CollectionType where Index == Int {
func shuffle() -> [Generator.Element] {
var list = Array(self)
list.shuffleInPlace()
return list
}
}
private var propertyAssociationKey: UInt8 = 0
extension String {
weak var property: CustomClass! {
get {
return objc_getAssociatedObject(self, &propertyAssociationKey) as? CustomClass
}
set(newValue) {
objc_setAssociatedObject(self, &propertyAssociationKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
@maximbilan
maximbilan / CoreDataStorage.swift
Created October 18, 2015 15:49
Core Data Storage
//
// CoreDataStorage.swift
// TutorialAppGroup
//
// Created by Maxim on 10/18/15.
// Copyright © 2015 Maxim. All rights reserved.
//
import Foundation
import CoreData
@maximbilan
maximbilan / YouTubeParseLinks.swift
Created October 20, 2015 12:59
YouTubeParseLinks.swift
@maximbilan
maximbilan / YouTubeParseLinks.m
Last active October 20, 2015 13:02
YouTubeParseLinks.m
@maximbilan
maximbilan / EventMonitor.swift
Created October 21, 2015 17:29
Mac OS X Event Monitor
import Cocoa
public class EventMonitor {
private var monitor: AnyObject?
private let mask: NSEventMask
private let handler: NSEvent? -> ()
public init(mask: NSEventMask, handler: NSEvent? -> ()) {
self.mask = mask