Эх сурвалжийг харах

move video icon and avatar view closer together, allow to shink images in InitialsBadge, shrink video icon

cyberta 4 жил өмнө
parent
commit
848e2764f8

+ 30 - 10
DcCore/DcCore/Extensions/UIView+Extensions.swift

@@ -8,42 +8,62 @@ public extension UIView {
     }
 
     func alignLeadingToAnchor(_ anchor: NSLayoutXAxisAnchor, paddingLeading: CGFloat = 0.0, priority: UILayoutPriority? = .none) {
+        _ = constraintAlignLeadingToAnchor(anchor, paddingLeading: paddingLeading, priority: priority)
+    }
+
+    func alignTrailingToAnchor(_ anchor: NSLayoutXAxisAnchor, paddingTrailing: CGFloat = 0.0, priority: UILayoutPriority? = .none) {
+        _ = constraintAlignTrailingToAnchor(anchor, paddingTrailing: paddingTrailing, priority: priority)
+    }
+
+    func alignTopToAnchor(_ anchor: NSLayoutYAxisAnchor, paddingTop: CGFloat = 0.0, priority: UILayoutPriority? = .none) {
+        _ = constraintAlignTopToAnchor(anchor, paddingTop: paddingTop, priority: priority)
+    }
+
+    func alignBottomToAnchor(_ anchor: NSLayoutYAxisAnchor, paddingBottom: CGFloat = 0.0, priority: UILayoutPriority? = .none) {
+        _ = constraintAlignBottomToAnchor(anchor, paddingBottom: paddingBottom, priority: priority)
+    }
+
+    func fill(view: UIView, paddingLeading: CGFloat? = 0.0, paddingTrailing: CGFloat? = 0.0, paddingTop: CGFloat? = 0.0, paddingBottom: CGFloat? = 0.0) {
+        alignLeadingToAnchor(view.leadingAnchor, paddingLeading: paddingLeading ??  0.0)
+        alignTrailingToAnchor(view.trailingAnchor, paddingTrailing: paddingTrailing ?? 0.0)
+        alignTopToAnchor(view.topAnchor, paddingTop: paddingTop ?? 0.0)
+        alignBottomToAnchor(view.bottomAnchor, paddingBottom: paddingBottom ?? 0.0)
+    }
+
+    func constraintAlignLeadingToAnchor(_ anchor: NSLayoutXAxisAnchor, paddingLeading: CGFloat = 0.0, priority: UILayoutPriority? = .none) -> NSLayoutConstraint {
         let constraint = self.leadingAnchor.constraint(equalTo: anchor, constant: paddingLeading)
         if let priority = priority {
             constraint.priority = priority
         }
         constraint.isActive = true
+        return constraint
     }
 
-    func alignTrailingToAnchor(_ anchor: NSLayoutXAxisAnchor, paddingTrailing: CGFloat = 0.0, priority: UILayoutPriority? = .none) {
+    func constraintAlignTrailingToAnchor(_ anchor: NSLayoutXAxisAnchor, paddingTrailing: CGFloat = 0.0, priority: UILayoutPriority? = .none) -> NSLayoutConstraint {
         let constraint = self.trailingAnchor.constraint(equalTo: anchor, constant: -paddingTrailing)
         if let priority = priority {
             constraint.priority = priority
         }
         constraint.isActive = true
+        return constraint
     }
 
-    func alignTopToAnchor(_ anchor: NSLayoutYAxisAnchor, paddingTop: CGFloat = 0.0, priority: UILayoutPriority? = .none) {
+    func constraintAlignTopToAnchor(_ anchor: NSLayoutYAxisAnchor, paddingTop: CGFloat = 0.0, priority: UILayoutPriority? = .none) -> NSLayoutConstraint {
         let constraint = self.topAnchor.constraint(equalTo: anchor, constant: paddingTop)
         if let priority = priority {
             constraint.priority = priority
         }
         constraint.isActive = true
+        return constraint
     }
 
-    func alignBottomToAnchor(_ anchor: NSLayoutYAxisAnchor, paddingBottom: CGFloat = 0.0, priority: UILayoutPriority? = .none) {
+    func constraintAlignBottomToAnchor(_ anchor: NSLayoutYAxisAnchor, paddingBottom: CGFloat = 0.0, priority: UILayoutPriority? = .none) -> NSLayoutConstraint {
         let constraint = self.bottomAnchor.constraint(equalTo: anchor, constant: -paddingBottom)
         if let priority = priority {
             constraint.priority = priority
         }
         constraint.isActive = true
-    }
-
-    func fill(view: UIView, paddingLeading: CGFloat? = 0.0, paddingTrailing: CGFloat? = 0.0, paddingTop: CGFloat? = 0.0, paddingBottom: CGFloat? = 0.0) {
-        alignLeadingToAnchor(view.leadingAnchor, paddingLeading: paddingLeading ??  0.0)
-        alignTrailingToAnchor(view.trailingAnchor, paddingTrailing: paddingTrailing ?? 0.0)
-        alignTopToAnchor(view.topAnchor, paddingTop: paddingTop ?? 0.0)
-        alignBottomToAnchor(view.bottomAnchor, paddingBottom: paddingBottom ?? 0.0)
+        return constraint
     }
 
     func constraintAlignTopTo(_ view: UIView) -> NSLayoutConstraint {

+ 18 - 4
DcCore/DcCore/Views/InitialsBadge.swift

@@ -5,6 +5,20 @@ public class InitialsBadge: UIView {
     private let verificationViewPadding: CGFloat = 2
     private let size: CGFloat
 
+    var leadingImageAnchorConstraint: NSLayoutConstraint?
+    var trailingImageAnchorConstraint: NSLayoutConstraint?
+    var topImageAnchorConstraint: NSLayoutConstraint?
+    var bottomImageAnchorConstraint: NSLayoutConstraint?
+
+    public var imagePadding: CGFloat = 0 {
+        didSet {
+            leadingImageAnchorConstraint?.constant = imagePadding
+            topImageAnchorConstraint?.constant = imagePadding
+            trailingImageAnchorConstraint?.constant = -imagePadding
+            bottomImageAnchorConstraint?.constant = -imagePadding
+        }
+    }
+
     private var label: UILabel = {
         let label = UILabel()
         label.textAlignment = NSTextAlignment.center
@@ -69,10 +83,10 @@ public class InitialsBadge: UIView {
     private func setupSubviews(with radius: CGFloat) {
         addSubview(imageView)
         imageView.layer.cornerRadius = radius
-        imageView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
-        imageView.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
-        imageView.alignTopToAnchor(topAnchor)
-        imageView.alignBottomToAnchor(bottomAnchor)
+        leadingImageAnchorConstraint = imageView.constraintAlignLeadingToAnchor(leadingAnchor)
+        trailingImageAnchorConstraint = imageView.constraintAlignTrailingToAnchor(trailingAnchor)
+        topImageAnchorConstraint = imageView.constraintAlignTopToAnchor(topAnchor)
+        bottomImageAnchorConstraint = imageView.constraintAlignBottomToAnchor(bottomAnchor)
 
         addSubview(label)
         label.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true

+ 3 - 2
deltachat-ios/Chat/Views/Cells/VideoInviteCell.swift

@@ -28,6 +28,7 @@ public class VideoInviteCell: UITableViewCell {
         view.setContentHuggingPriority(.defaultHigh, for: .horizontal)
         view.setImage(#imageLiteral(resourceName: "ic_videochat").withRenderingMode(.alwaysTemplate))
         view.tintColor = DcColors.defaultInverseColor
+        view.imagePadding = 3
         return view
     }()
 
@@ -87,9 +88,9 @@ public class VideoInviteCell: UITableViewCell {
         contentView.addSubview(bottomLabel)
         contentView.addConstraints([
             videoIcon.constraintAlignTopTo(contentView, paddingTop: 12),
-            videoIcon.constraintCenterXTo(contentView, paddingX: -36),
+            videoIcon.constraintCenterXTo(contentView, paddingX: -20),
             avatarView.constraintAlignTopTo(contentView, paddingTop: 12),
-            avatarView.constraintCenterXTo(contentView, paddingX: 36),
+            avatarView.constraintCenterXTo(contentView, paddingX: 20),
             messageLabel.constraintToBottomOf(videoIcon, paddingTop: 16),
             messageLabel.constraintAlignLeadingMaxTo(contentView, paddingLeading: UIDevice.current.userInterfaceIdiom == .pad ? 150 : 50),
             messageLabel.constraintAlignTrailingMaxTo(contentView, paddingTrailing: UIDevice.current.userInterfaceIdiom == .pad ? 150 : 50),