在 ~/.gitconfig
文件里配置
[http]
proxy = socks5://127.0.0.1:1080
[https "github.com"]
proxy = socks5://127.0.0.1:1080
sslverify = false
import UIKit | |
extension UIView { | |
/// UIView 添加 Auto Layout | |
@objc func layout(_ constraints: [NSLayoutConstraint]) { | |
translatesAutoresizingMaskIntoConstraints = false | |
NSLayoutConstraint.activate(constraints) | |
} |
/// 简化多次赋值的变量初始化 | |
public protocol Then {} | |
extension Then { | |
@discardableResult | |
@inlinable | |
public func `do`(_ block: (Self) throws -> Void) rethrows -> Self { | |
try block(self) | |
return self | |
} | |
} |
// Override to support rearranging the table view.
override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
tableView.moveRow(at: fromIndexPath, to: to)
}
// Override to support conditional rearranging of the table view.
override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
extension UIGestureRecognizer { | |
private struct AssociatedKeys { | |
static var action = "action" | |
} | |
private typealias GestureAction = ((UIGestureRecognizer) -> Void) | |
private var action: GestureAction? { | |
get { |
extension View { | |
func hideNavigationBar(_ hidden: Bool = true) -> some View { | |
if #available(iOS 16.0, *) { | |
return self.toolbar(hidden ? .hidden : .visible) | |
} else { | |
// Fallback on earlier versions | |
return self.navigationBarHidden(hidden) | |
} | |
} | |
} |
import UIKit | |
// MARK: - Initializers | |
extension UIAlertController { | |
/// Create new alert view controller. | |
/// | |
/// - Parameters: | |
/// - style: alert controller's style. | |
/// - title: alert controller's title. |
import SwiftUI | |
import UIKit | |
/// 创建一个SwiftUI的容器View,将UIViewControler包含在内,即可预览 | |
/// | |
/// 如果要预览这个ViewController | |
/// | |
/// ```swift | |
/// class ViewController: UIViewController { |
extension String { | |
// 移除空白 | |
func removingWhitespace() -> String { | |
let whitespacePattern = "\\s+" | |
let regex = try? NSRegularExpression(pattern: whitespacePattern, options: .caseInsensitive) | |
let range = NSRange(location: 0, length: count) | |
return regex?.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: "") ?? self | |
} |