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
Carthage
Please check official guide
Cartfile for unified framework:
github "APUtils/APExtensions" ~> 10.0
You should later add both APExtensions
and RoutableLogger
frameworks to your project.
CocoaPods
APExtensions is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'APExtensions', '~> 10.0'
Available subspecs: Core
, Storyboard
, ViewConfiguration
. Example Podfile for subspec:
pod 'APExtensions/Core', '~> 10.0'
pod 'APExtensions/Storyboard', '~> 10.0'
pod 'APExtensions/ViewConfiguration', '~> 10.0'
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.
ViewConfiguration
Adds State
enum and .configure(_:)
method to views so it’s easy and robust to configure them.
// Creating UIImageView.State and store it in view model
let imageViewState: UIImageView.State = .shown(image: UIImage(named: "ic_done_resizeable"))
viewModel.imageViewState = imageViewState
// Configure UIImageView with view model
imageView.configure(viewModel.imageViewState)
ViewState
Moved to https://github.com/APUtils/ViewState
Storyboard
Extends default attributes that can be configured using storyboard.
NSLayoutConstraint:
fitScreenSize
to adjust constraint constant according to screen size. *onePixelSize
to make constraint 1 pixel size
UIButton:
fitScreenSize
to adjust font size according to screen size. *lines
to change title label max lines count
UIImageView:
fitScreenSize
to adjust image size according to screen size. *localizableImageName
to use localize specific image. You name your images likeimage_en
,image_ru
,image_fr
putimage
inlocalizableImageName
field and assure you localized_en
to be_fr
for French localization,_ru
for Russian and so on.
UILabel:
fitScreenSize
to adjust font size according to screen size. *
UIScrollView:
avoidTopBars
to set contentInset.top to 64avoidTabBar
to set contentInset.bottom to 49
UITextView:
fitScreenSize
to adjust font size according to screen size. *
UIView:
borderColor
to set border colorborderWidth
to set border widthborderOnePixelWidth
to make border 1 pixel widthcornerRadius
to set corners radiusshadowColor
to set shadow colorshadowOffset
to set shadow offsetshadowOpacity
to set shadow opacityshadowRadius
to set shadow radiusshadowApplyPath
to apply view bounds rect as shadow pass. Greatly improves performance for opaque views.
UIViewController:
hideKeyboardOnTouch
to 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.
Contributions
Any contribution is more than welcome! You can contribute through pull requests and issues on GitHub.
Author
Anton Plebanovich, anton.plebanovich@gmail.com
License
APExtensions is available under the MIT license. See the LICENSE file for more info.