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 / Array2D.swift
Last active March 29, 2021 03:50
Multidimensional arrays in Swift
class Array2D<T> {
var columns: Int
var rows: Int
var matrix: [T]
init(columns: Int, rows: Int, defaultValue: T) {
self.columns = columns
self.rows = rows
matrix = Array(count: columns * rows, repeatedValue: defaultValue)
@maximbilan
maximbilan / UIViewExtension.swift
Created September 11, 2015 10:24
Swift 2.0 Simple extension for loading UIView with XIB
import UIKit
public extension UIView {
public class func instantiateFromNib<T: UIView>(viewType: T.Type) -> T {
let url = NSURL(string: NSStringFromClass(viewType))
return NSBundle.mainBundle().loadNibNamed(url?.pathExtension, owner: nil, options: nil).first as! T
}
public class func instantiateFromNib() -> Self {
@maximbilan
maximbilan / UIViewExtension.swift
Last active November 10, 2021 12:00
Swift 1.2 Simple extension for loading UIView with XIB
import UIKit
public extension UIView {
public class func instantiateFromNib<T: UIView>(viewType: T.Type) -> T {
return NSBundle.mainBundle().loadNibNamed(NSStringFromClass(viewType).pathExtension, owner: nil, options: nil).first as! T
}
public class func instantiateFromNib() -> Self {
return instantiateFromNib(self)
}
@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 / 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: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: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;