Skip to content

Instantly share code, notes, and snippets.

View npu3pak's full-sized avatar
🏠
Working from home

Evgeniy Safronov npu3pak

🏠
Working from home
View GitHub Profile
@npu3pak
npu3pak / KeyboardEventsViewController.swift
Last active July 2, 2018 15:44
iOS. Изменение положения элементов при отображении/скрытии клавиатуры
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
let desirableBottomPadding: CGFloat = 16.0
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
@npu3pak
npu3pak / EasyParcelable.java
Last active January 25, 2017 14:42
Android. Parcelable без необходимости реализовывать довольно сложный интерфейс. В теории должно работать медленнее чем полноценные Parcelable, на практике разницы нет.
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
public class EasyParcelable implements Parcelable, Serializable {
protected EasyParcelable() {
}
@npu3pak
npu3pak / SharedPreferences.java
Last active January 25, 2017 15:11
Android. Удобная реализация SharedPreferences. В примере используется библиотека Gson
import android.content.Context;
import android.content.SharedPreferences;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
public final class Preferences {
private static final String PREFS_KEY = "my.app.shared.preferences.key";
private static final String PREFS_JSON_KEY = "json.key";
@npu3pak
npu3pak / PreferencesStorage.swift
Created February 17, 2017 05:07
Хелпер для работы с настройками на Swift
import Foundation
class PreferencesStorage {
private static let keyStartBusStopId = "StartBusStopId"
var startBusStopId: Int64?
private static let keyEndBusStopId = "EndBusStopId"
var endBusStopId: Int64?
private init() {}
@npu3pak
npu3pak / ColoredButton.swift
Created February 18, 2017 18:09
Кнопка, которая меняет цвет фона в момент нажатия
import UIKit
class ColorButton: UIButton {
let normalColor = UIColor.blue
let pressedColor = UIColor.green
override func awakeFromNib() {
super.awakeFromNib()
@npu3pak
npu3pak / CustomButton.swift
Last active February 21, 2017 05:56
Кнопка со скруглениями и картинками, настраиваемая через InterfaceBuilder.
@IBDesignable class CustomButton: UIButton {
private var leftImageView: UIImageView!
private var rightImageView: UIImageView!
override init(frame: CGRect) {
super.init(frame: frame)
setUp()
}
required init?(coder aDecoder: NSCoder) {
extension String {
func index(from: Int) -> Index {
return self.index(startIndex, offsetBy: from)
}
func substring(from: Int) -> String {
let fromIndex = index(from: from)
return substring(from: fromIndex)
}
@npu3pak
npu3pak / JavaUtfStringExtension.swift
Last active March 7, 2017 05:00
Расшифровывает строки, в которых приходят символы в виде \u0420
extension String {
var decodingJavaUnicode: String {
let jsonString = NSMutableString(string: self)
CFStringTransform(jsonString, nil, "Any-Hex/Java" as NSString, true )
return jsonString as String
}
}
@npu3pak
npu3pak / CustomSwitch.swift
Created March 14, 2017 06:17
Замена UISwitch с кастомными картинками для состояний
import UIKit
@IBDesignable class CustomSwitch: UIButton {
var onValueChanged: ((Bool) -> Void)?
@IBInspectable var isOn: Bool = false {
didSet {
isSelected = isOn
onValueChanged?(isOn)
}
@npu3pak
npu3pak / WeirdError.swift
Created March 16, 2017 07:35
Код, который не компилируется. На собеседовании будет!
class MyClass {
var variable: String? = nil
func doIt() {
variable = "123"
let variable = "345"
}
}