FavOnboardingKit provides an onboarding flow that is simple and easy to implement.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"status": 200, | |
"layouts": [ | |
{ | |
"type": "mainBanner", | |
"id": "79c7e84a-d29b-11ee-8a80-325096b39f47", | |
"value": { | |
"id": "816aa24d-67f5-4ba1-8329-90d9d814610a", | |
"imageLink": "https://source.unsplash.com/random/300×200/?work-in-tech", | |
"title": "Learning that fits", |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"status": 200, | |
"layouts": [ | |
{ | |
"type": "mainBanner", | |
"id": "79c7e84a-d29b-11ee-8a80-325096b39f47", | |
"value": { | |
"id": "816aa24d-67f5-4ba1-8329-90d9d814610a", | |
"imageLink": "https://source.unsplash.com/random/300×200/?work-in-tech", | |
"title": "Learning that fits", |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension String { | |
var camelCaseToEnglish: String { | |
var result = "" | |
var wordStartIndex = self.startIndex | |
for (index, char) in self.enumerated() { | |
if index > 0 && char.isUppercase { | |
let previousWord = self[wordStartIndex..<self.index(self.startIndex, offsetBy: index)] | |
if !previousWord.isEmpty { | |
result += "\(previousWord) " |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class AttributedTappableLabel: UILabel { | |
var onTap: (() -> Void)? | |
var tapRange: NSRange? | |
var labelFont: UIFont? | |
override init(frame: CGRect) { | |
super.init(frame: frame) | |
// Enable user interaction to handle tap | |
isUserInteractionEnabled = true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension UILabel { | |
func resizable() -> Self { | |
translatesAutoresizingMaskIntoConstraints = false | |
return self | |
} | |
func text(_ text: String) -> Self { | |
self.text = text | |
return self |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct HomeViewController_Previews: PreviewProvider { | |
static var previews: some View { | |
Container().edgesIgnoringSafeArea(.all) | |
} | |
struct Container: UIViewControllerRepresentable { | |
func makeUIViewController(context: Context) -> UIViewController { | |
UINavigationController(rootViewController: HomeViewController()) | |
} | |
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} | |
typealias UIViewControllerType = UIViewController |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Privacy Policy | |
================ | |
Last revised on [DATE] | |
### The Gist | |
[COMPANY] operates the [SERVICE] service, which we hope you use. If you use it, please use it responsibly. If you don't, we'll have to terminate your account. | |
For paid accounts, you'll be charged on a monthly basis. You can cancel anytime, but there are no refunds. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Terms of Use | |
================ | |
Last revised on [DATE] | |
### The Gist | |
[COMPANY] operates the [SERVICE] service, which we hope you use. If you use it, please use it responsibly. If you don't, we'll have to terminate your account. | |
For paid accounts, you'll be charged on a monthly basis. You can cancel anytime, but there are no refunds. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
class DateTimePicker: NSObject, UIPickerViewDelegate, UIPickerViewDataSource { | |
// Reference from https://stackoverflow.com/questions/40878547/is-it-possible-to-have-uidatepicker-work-with-start-and-end-time | |
var didSelectDates: ((_ start: Date, _ end: Date) -> Void)? | |
private lazy var pickerView: UIPickerView = { | |
let pickerView = UIPickerView() |
NewerOlder