Skip to content

Instantly share code, notes, and snippets.

View muukii's full-sized avatar
✈️
We live in a twilight world.

Hiroshi Kimura muukii

✈️
We live in a twilight world.
View GitHub Profile
import SwiftUI
@available(iOS 15, *)
struct Slider: View {
enum SliderPreferenceKey: PreferenceKey {
static var defaultValue: CGRect = .zero
import UIKit
// http://easings.net/
@available(iOS 10.0, *)
extension UICubicTimingParameters {
public class func easeInSine() -> UICubicTimingParameters { return UICubicTimingParameters(0.47, 0, 0.745, 0.715) }
public class func easeOutSine() -> UICubicTimingParameters { return UICubicTimingParameters(0.39, 0.575, 0.565, 1) }
public class func easeInOutSine() -> UICubicTimingParameters { return UICubicTimingParameters(0.445, 0.05, 0.55, 0.95) }
public class func easeInQuad() -> UICubicTimingParameters { return UICubicTimingParameters(0.55, 0.085, 0.68, 0.53) }
@muukii
muukii / UIView+Bounce
Created February 10, 2014 09:40
UIView bounce Animation
- (void)bounceAnimation:(void (^)())completion
{
CGRect rect = self.frame;
CGRect insetRect = CGRectInset(rect, 10, 10);
self.frame = insetRect;
[UIView animateWithDuration:1 delay:0 usingSpringWithDamping:0.4 initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
self.frame = rect;
} completion:^(BOOL finished) {
@muukii
muukii / UIView+Util.swift
Last active March 13, 2023 05:54
Find UIView by AccessibilityIdentifier
extension UIView {
public class func findByAccessibilityIdentifier(identifier: String) -> UIView? {
guard let window = UIApplication.sharedApplication().keyWindow else {
return nil
}
func findByID(view: UIView, _ id: String) -> UIView? {
if view.accessibilityIdentifier == id { return view }
for v in view.subviews {
@muukii
muukii / Path.md
Last active February 27, 2023 07:10
iOS 16 SwiftUI interface
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SwiftUI.framework/Modules/SwiftUI.swiftmodule/arm64-apple-ios.swiftinterface
@muukii
muukii / MTKCIImageView.swift
Created September 28, 2015 05:32
CIImageView (Using Metal)
//
// MTKCIImageView.swift
// Fil
//
// Created by Muukii on 9/27/15.
// Copyright © 2015 muukii. All rights reserved.
//
import Foundation
import Metal
import SwiftUI
import Foundation
extension View {
func snapshot(scale: CGFloat) -> UIImage {
let controller = UIHostingController(rootView: self)
let view = controller.view
let targetSize = controller.view.intrinsicContentSize
view?.bounds = CGRect(origin: .zero, size: targetSize)
let backgroundView = UIView.mock(backgroundColor: .neon(.violet))
let box1 = UIView.mock(backgroundColor: .neon(.red), preferredSize: .largeSquare)
let box2 = UIView.mock(backgroundColor: .neon(.yellow), preferredSize: .largeSquare)
view.addSubview(backgroundView)
view.addSubview(box1)
view.addSubview(box2)
mondrianBatchLayout {
HStackBlock(spacing: 10) {
box2
box1
}
let backgroundView = UIView.mock(backgroundColor: .neon(.violet))
let box1 = UIView.mock(backgroundColor: .neon(.red), preferredSize: .largeSquare)
let box2 = UIView.mock(backgroundColor: .neon(.yellow), preferredSize: .largeSquare)
view.mondrian.buildSubviews {
HStackBlock(spacing: 10) {
box1
box2
}
.padding(10)