                 leftView: UIView? = nil,
                 rightView: UIView? = nil,
                 style: BannerStyle = .info,
-                colors: BannerColorsProtocol? = nil) {
+                colors: BannerColorsProtocol? = nil,
+                iconPosition: IconPosition = .top) {
         
         self.leftView = leftView
         self.rightView = rightView
         
         super.init(style: style, colors: colors)
         
-        let labelsView = UIView()
-        contentView.addSubview(labelsView)
+        let labelsView = UIStackView()
+        labelsView.axis = .vertical
+        labelsView.spacing = innerSpacing
+        
+        let outerStackView = UIStackView()
+        outerStackView.spacing = padding
+        
+        switch iconPosition {
+        case .top:
+            outerStackView.alignment = .top
+        case .center:
+            outerStackView.alignment = .center
+        }
         
         if let leftView = leftView {
-            contentView.addSubview(leftView)
+            outerStackView.addArrangedSubview(leftView)
             
-            leftView.snp.makeConstraints({ (make) in
-                make.size.equalTo(iconSize)
-                make.centerY.equalTo(labelsView)
-                make.left.equalToSuperview().offset(padding)
-            })
+            leftView.snp.makeConstraints { $0.size.equalTo(iconSize) }
         }
         
-        if let rightView = rightView {
-            contentView.addSubview(rightView)
-            
-            rightView.snp.makeConstraints({ (make) in
-                make.size.equalTo(iconSize)
-                make.centerY.equalTo(labelsView)
-                make.right.equalToSuperview().offset(-padding)
-            })
-        }
+        outerStackView.addArrangedSubview(labelsView)
         
         titleLabel = UILabel()
         titleLabel!.font = UIFont.systemFont(ofSize: 17.5, weight: UIFont.Weight.bold)

        titleLabel!.text = title
        titleLabel!.numberOfLines = 0
        titleLabel!.setContentHuggingPriority(.required, for: .vertical)
        labelsView.addSubview(titleLabel!)
        
        titleLabel!.snp.makeConstraints { (make) in
            make.top.equalToSuperview()
            make.left.equalToSuperview()
            make.right.equalToSuperview()
            make.bottom.lessThanOrEqualToSuperview()
        }
        
        if let subtitle = subtitle {
            subtitleLabel = UILabel()

import SnapKit

public class GrowingNotificationBanner: BaseNotificationBanner {
    
    public enum IconPosition {
        case top
        case center
    }
    
    /// The height of the banner when it is presented
    override public var bannerHeight: CGFloat {
