ACKategories 6.12.3

ACKategories 6.12.3

LangLanguage SwiftSwift
License MIT
ReleasedLast Release Jun 2023
SPMSupports SPM

Maintained by Jan Mísař, Dominik Ackee, Jakub Olejník, Ackee Github.


Swift CI Status Version Carthage compatible License Platform

A bunch of tools, cocoa subclasses and extensions we created and use at Ackee.



ACKategories is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "ACKategories", "~> 6.12.3"


You can also use Carthage. Specify this repo in your Cartfile:

github "AckeeCZ/ACKategories" ~> 6.12.3


Or you can use SPM. Add this to your Package.swift:

.package(url: "", .upToNextMajor(from: "6.12.3")),

Swift versions

If you're interested in using ACKategories in your older projects see all branches, there probably is the version you need.

List of features

This is only fast description of features, see source code for documentation comments and details.

Flow coordinators

ACKategories contain basic FlowCoordinator that should be used as parent class for all your flow coordinators. For more information see FlowCoordinators.


Extension for UIButton that fixes intrinsicContentSize and adds titleEdgeInsets to it.


  • Initialize colors with hex codes
  • Create random color
  • Create lighter/darker colors from color
  • Recognize light/dark background colors to decide what text color you should use.
  • Create solid color image from color.


Add action blocks to UIControls.

let button = UIButton()
button.on(.touchUpInside) { sender in

If running on iOS 9 or later you can use implicit parameter UIControl.primaryActionTriggered.


  • trim strings easily
  • get first letter of string
  • simplify localization


  • isEmpty on optional collections (even strings). Returns true when collection is nil or empty.


Use this view as TableHeaderView or TableFooterView when your table/footer has dynamic content size.


Use this view when you want to create a view with gradient colors and a given axis.

Init takes two parameters:

  • colors: The colors to be used for the gradient.
  • axis: The axis of the gradient: .vertical for bottom-to-top gradient, .horizontal for left-to-right gradient.

Please note: If one of your colors is clear, you should usually define to which "clear color" it should go to - i.e. if you want to go from white to clear, write:

let gradientView = GradientView(colors: [UIColor.white, UIColor.white.withAlphaComponent(0)], axis: .vertical)

UITableView and UICollectionView extensions

Since now you can use simple extension which autoregisters your UITableView and UICollectionView cells!

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // generically dequed cell which was autoregistered, no need to register your cells in advance
    let cell: YourCustomCell = tableView.dequeCellForIndexPath(indexPath)
    return cell

And it's the same story with UICollectionView.

Forking this repository

If you use our extensions within your team we would love to hear about it. Drop us a tweet at @ackeecz or leave a star here on Github. BTW we would also like to know what other extensions you use!

Sharing is caring

This repo has been opensourced within our #sharingiscaring action when we have decided to opensource our internal projects.


Ackee team


ACKategories is available under the MIT license. See the LICENSE file for more info.