Skip to content

Instantly share code, notes, and snippets.

View brownsoo's full-sized avatar
🐢
Step by step

brownsoo brownsoo

🐢
Step by step
View GitHub Profile
@brownsoo
brownsoo / uiimage_tint.swift
Created April 10, 2018 04:54
tint color UIImage
public extension UIImage {
func tint(_ color: UIColor) -> UIImage {
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
let renderer = UIGraphicsImageRenderer(size: rect.size)
let result = renderer.image { c in
color.setFill()
c.fill(rect)
self.draw(in: rect, blendMode: .destinationIn, alpha: 1)
}
return result
@brownsoo
brownsoo / responsive_keyboard.swift
Created April 9, 2018 09:31
Responsive to keyboard frame in iOS
// in UIViewController
func setupHideKeypadWhenTappedAround() {
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
// responsive keyboard frame
NotificationCenter.default.addObserver(self, selector: #selector(handleKeyboardWillChange),
name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
}
@brownsoo
brownsoo / change-pod-trunk-owner-name.txt
Created March 28, 2018 06:29
Change name of cocoapod owner
// find email, password (Token)
grep -A2 'trunk.cocoapods.org' ~/.netrc
// replace email and name
curl -v -H "Authorization: Token <MY CURRENT TOKEN>" -H "Content-Type: application/json" -X POST -d '{"email":"<MY EMAIL>","name":"<MY NEW NAME>","description":"<My DESCRIPTION>"}' https://trunk.cocoapods.org/api/v1/sessions
@brownsoo
brownsoo / ReSwift+select.swift
Created February 28, 2018 05:56 — forked from nferruzzi/ReSwift+select.swift
My own ReSwift multi observer extension with support for equatable types and optionals of equatable types
// Promise like subscriber, works with Equatable types and Optionals of Equatable types
// ie:
// let observer = document.mainStore
// .select { (state) -> UIState in state.ui }
// .then { _ in called += 1 }
// or
// let observer = document.mainStore
// .select { (state) -> String? in state.ui.selection }
// .then { _ in called += 1 }
//
@brownsoo
brownsoo / updates-visible-items-recyclerview.java
Created August 22, 2017 09:43
Updates visible item views in RecyclerView
private void updateVisibleTaskIndex() {
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
if (layoutManager instanceof LinearLayoutManager) {
LinearLayoutManager linearLayoutManager = (LinearLayoutManager) layoutManager;
int first = linearLayoutManager.findFirstVisibleItemPosition();
int last = linearLayoutManager.findLastVisibleItemPosition();
RecyclerView.ViewHolder viewHolder;
for (int i = first; i <= last; i++) {
viewHolder = recyclerView.findViewHolderForAdapterPosition(i);
if (viewHolder instanceof TaskViewHolder) { //TaskViewHolder is custom holder
@brownsoo
brownsoo / android-architecture-components-proguard.txt
Created July 25, 2017 09:17
Proguard setting for Android Architecture Components
## Android architecture components: Lifecycle
# LifecycleObserver's empty constructor is considered to be unused by proguard
-keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver {
<init>(...);
}
# ViewModel's empty constructor is considered to be unused by proguard
-keepclassmembers class * extends android.arch.lifecycle.ViewModel {
<init>(...);
}
# keep Lifecycle State and Event enums values
@brownsoo
brownsoo / ripple_effect_bg.xml
Last active September 11, 2017 08:38
Ripple effect to drawable in android
<!-- drawable-v21 -->
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item
android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#000000"/>
<corners android:radius="5dp"/>
</shape>
@brownsoo
brownsoo / EmailRegex.java
Created June 29, 2017 02:41
e-mail regular expression (java)
// 이메일 정규표현식
public static boolean testEmailFormat(String text) {
if (TextUtils.isEmpty(text)) return false;
Pattern pattern = Pattern.compile("^(([^<>()\\[\\]\\\\.,;:\\s@\"]" +
"+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(.+))" +
"@" +
"((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])" +
"|(([a-zA-Z-0-9]+\\.)+[a-zA-Z]{2,}))$");
return pattern.matcher(text).matches();
}
@brownsoo
brownsoo / email-regex.js
Last active June 29, 2017 02:42
Email - Regular expression (javascript)
// 이메일 정규 표현식
var pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
@brownsoo
brownsoo / resizable-left-child-view.xml
Created June 19, 2017 05:38
chat style layout - resizable left child view with following right child view
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- left wrap_content view is resizable but not exceeds following child view -->
<TextView
android:id="@+id/parcel_number"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:fontFamily="@string/vt__font_family_light"
android:textColor="@color/vt__shipment__process__order__parcel__number"