      
      - note: If you decide to use constraints to determine the size, self's frame doesn't need to be final.
              Because of this, it can be used in `loadView()`, `viewDidLoad()` or `viewWillAppear(animated:)`.
+             We strongly recommend to work with constraints as a better practice than frames.
      */
     public func add(bottom border: ViewBorder,
                     withLeftOffset left: CGFloat = 0, rightOffset right: CGFloat = 0,

     
     - note: If you decide to use constraints to determine the size, self's frame doesn't need to be final.
             Because of this, it can be used in `loadView()`, `viewDidLoad()` or `viewWillAppear(animated:)`.
     */
    public func add(top border: ViewBorder,
                    withLeftOffset left: CGFloat = 0, rightOffset right: CGFloat = 0,

     
     - note: If you decide to use constraints to determine the size, self's frame doesn't need to be final.
             Because of this, it can be used in `loadView()`, `viewDidLoad()` or `viewWillAppear(animated:)`.
             We strongly recommend to work with constraints as a better practice than frames.
     */
    public func add(right border: ViewBorder,
                    withTopOffset top: CGFloat = 0, bottomOffset bottom: CGFloat = 0,
