APExtensions
A helpful collection of extensions, controllers and protocols
Example
To run the example project, clone the repo, and run pod install from the Example directory first.
Installation
Swift Package Manager
- In Xcode select
File>Add Packages... - Copy and paste the following into the search:
https://github.com/APUtils/APExtensions ‼️ Make sureUp to Next Major Versionis selected and put13.0.0into the lower bound. There is a bug in Xcode, it does not select versions higher than 9.0.0 by default‼️ - Tap
Add Package - Select
APExtensionto add everything and tapAdd Package
CocoaPods
APExtensions is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'APExtensions', '~> 13.0'Available subspecs: Core, Storyboard, ViewModel. Example Podfile for subspec:
pod 'APExtensions/Core', '~> 13.0'
pod 'APExtensions/Storyboard', '~> 13.0'
pod 'APExtensions/ViewModel', '~> 13.0'Carthage DEPRECATED
Please check official guide
Cartfile:
github "APUtils/APExtensions" "carthage-old"
Install command: carthage bootstrap
You should later add both APExtensions and RoutableLogger frameworks to your project.
Carthage with XCFrameworks DEPRECATED
Please check official guide
Cartfile:
github "APUtils/APExtensions" ~> 13.0
Install command: carthage bootstrap --use-xcframeworks
You should later add both APExtensions and RoutableLogger frameworks to your project.
Usage
See documentation for more details.
Core
Global Utils and Debug methods, Controllers, Protocols and whole lot of default classes extensions. Read more in DOCS.
ViewModel
Adds ViewModel struct and .configure(vm:) method to views so it's easy and robust to configure them.
ViewState
Moved to https://github.com/APUtils/ViewState
Storyboard
Extends default attributes that can be configured using storyboard.
NSLayoutConstraint:
fitScreenSizeto adjust constraint constant according to screen size. *onePixelSizeto make constraint 1 pixel size
UIButton:
fitScreenSizeto adjust font size according to screen size. *linesto change title label max lines count
UIImageView:
fitScreenSizeto adjust image size according to screen size. *localizableImageNameto use localize specific image. You name your images likeimage_en,image_ru,image_frputimageinlocalizableImageNamefield and assure you localized_ento be_frfor French localization,_rufor Russian and so on.
UILabel:
fitScreenSizeto adjust font size according to screen size. *
UIScrollView:
avoidTopBarsto set contentInset.top to 64avoidTabBarto set contentInset.bottom to 49
UITextView:
fitScreenSizeto adjust font size according to screen size. *
UIView:
borderColorto set border colorborderWidthto set border widthborderOnePixelWidthto make border 1 pixel widthcornerRadiusto set corners radiusshadowColorto set shadow colorshadowOffsetto set shadow offsetshadowOpacityto set shadow opacityshadowRadiusto set shadow radiusshadowApplyPathto apply view bounds rect as shadow pass. Greatly improves performance for opaque views.
UIViewController:
hideKeyboardOnTouchto hide keyboard on touch outside it
Remark
Assuming layout was made for highest screen size (iPhone 6+, 6s+, 7+) so subject will be reduced propotionally on lower resolution screens.
Occupiable
Occupiable protocol
OptionalType
OptionalType protocol
Contributions
Any contribution is more than welcome! You can contribute through pull requests and issues on GitHub.
Author
Anton Plebanovich, [email protected]
License
APExtensions is available under the MIT license. See the LICENSE file for more info.







