             subtitleLabel!.numberOfLines = 0
             subtitleLabel!.textColor = .white
             subtitleLabel!.text = subtitle
-            labelsView.addSubview(subtitleLabel!)
-            
-            subtitleLabel!.snp.makeConstraints { (make) in
-                make.top.equalTo(titleLabel!.snp.bottom).offset(2.5)
-                make.left.equalTo(titleLabel!)
-                make.right.equalTo(titleLabel!)
-                make.bottom.equalToSuperview()
-            }
+            labelsView.addArrangedSubview(subtitleLabel!)
         }
         
-        labelsView.snp.makeConstraints { (make) in
-            if let leftView = leftView {
-                make.left.equalTo(leftView.snp.right).offset(padding)
-            } else {
-                if #available(iOS 11.0, *) {
-                    make.left.equalTo(safeAreaLayoutGuide).offset(padding)
-                } else {
-                    make.left.equalToSuperview().offset(padding)
-                }
-                
-            }
+        if let rightView = rightView {
+            outerStackView.addArrangedSubview(rightView)
             
-            if let rightView = rightView {
-                make.right.equalTo(rightView.snp.left).offset(-padding)
-            } else {
-                if #available(iOS 11.0, *) {
-                    make.right.equalTo(safeAreaLayoutGuide).offset(-padding)
-                } else {
-                    make.right.equalToSuperview().offset(-padding)
-                }
-            }
-            
+            rightView.snp.makeConstraints { $0.size.equalTo(iconSize) }
+        }
+        
+        contentView.addSubview(outerStackView)
+        outerStackView.snp.makeConstraints { (make) in
+            make.left.equalToSuperview().offset(padding)
             make.bottom.equalToSuperview().offset(-bottomSpacing)
+            make.right.equalToSuperview().offset(-padding)
         }
     }
     

                leftView: UIView? = nil,
                rightView: UIView? = nil,
                style: BannerStyle = .info,
                colors: BannerColorsProtocol? = nil) {
        
        self.leftView = leftView
        self.rightView = rightView
        
        super.init(style: style, colors: colors)
        
        let labelsView = UIView()
        contentView.addSubview(labelsView)
        
        if let leftView = leftView {
            contentView.addSubview(leftView)
            
            leftView.snp.makeConstraints({ (make) in
                make.size.equalTo(iconSize)
                make.centerY.equalTo(labelsView)
                make.left.equalToSuperview().offset(padding)
            })
        }
        
        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)
            })
        }
        
        titleLabel = UILabel()
        titleLabel!.font = UIFont.systemFont(ofSize: 17.5, weight: UIFont.Weight.bold)

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 {
