From 2e00372194d8765e195ca848bb5cdcf269418fae Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Mon, 8 Mar 2021 14:57:00 +0000 Subject: [PATCH 1/3] fix --- Sources/UI/Room/RoomMemberAccessoryView.swift | 18 +++- Sources/UI/Room/RoomMemberCell.swift | 97 ++++++++++++------- 2 files changed, 78 insertions(+), 37 deletions(-) diff --git a/Sources/UI/Room/RoomMemberAccessoryView.swift b/Sources/UI/Room/RoomMemberAccessoryView.swift index 82ae155a..2939e276 100644 --- a/Sources/UI/Room/RoomMemberAccessoryView.swift +++ b/Sources/UI/Room/RoomMemberAccessoryView.swift @@ -1,21 +1,31 @@ import UIKit class RoomMemberAccessoryView: UIView { - init(image: UIImage, frame: CGRect) { - super.init(frame: frame) + init(image: UIImage) { + super.init(frame: .zero) + + translatesAutoresizingMaskIntoConstraints = false - layer.cornerRadius = frame.size.width / 2 layer.masksToBounds = false clipsToBounds = true let imageView = UIImageView(image: image) - imageView.center = center imageView.tintColor = .white + imageView.translatesAutoresizingMaskIntoConstraints = false addSubview(imageView) + + NSLayoutConstraint.activate([ + imageView.centerYAnchor.constraint(equalTo: centerYAnchor), + imageView.centerXAnchor.constraint(equalTo: centerXAnchor), + ]) } required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } + + override func layoutSubviews() { + layer.cornerRadius = frame.size.width / 2 + } } diff --git a/Sources/UI/Room/RoomMemberCell.swift b/Sources/UI/Room/RoomMemberCell.swift index 3f51cb1d..eac462ae 100644 --- a/Sources/UI/Room/RoomMemberCell.swift +++ b/Sources/UI/Room/RoomMemberCell.swift @@ -1,19 +1,20 @@ import AlamofireImage import UIKit -// @TODO: AutoLayout - class RoomMemberCell: UICollectionViewCell { private(set) var user: Int64? - private var nameLabel: UILabel! + private var nameLabel: UILabel = { + let label = UILabel() + label.font = .rounded(forTextStyle: .body, weight: .regular) + label.textAlignment = .center + label.translatesAutoresizingMaskIntoConstraints = false + return label + }() private var muteView: RoomMemberAccessoryView = { let conf = UIImage.SymbolConfiguration(pointSize: 14, weight: .semibold) - let view = RoomMemberAccessoryView( - image: UIImage(systemName: "mic.slash.fill", withConfiguration: conf)!, - frame: CGRect(x: 0, y: 0, width: 24, height: 24) - ) + let view = RoomMemberAccessoryView(image: UIImage(systemName: "mic.slash.fill", withConfiguration: conf)!) view.backgroundColor = UIColor(red: 28 / 255, green: 28 / 255, blue: 30 / 255, alpha: 1.0) return view @@ -21,10 +22,7 @@ class RoomMemberCell: UICollectionViewCell { private var speakingView: RoomMemberAccessoryView = { let conf = UIImage.SymbolConfiguration(pointSize: 14, weight: .heavy) - let view = RoomMemberAccessoryView( - image: UIImage(systemName: "waveform", withConfiguration: conf)!, - frame: CGRect(x: 0, y: 0, width: 24, height: 24) - ) + let view = RoomMemberAccessoryView(image: UIImage(systemName: "waveform", withConfiguration: conf)!) let gradient = CAGradientLayer() @@ -45,16 +43,20 @@ class RoomMemberCell: UICollectionViewCell { }() private var adminView: UIView = { - let view = UIView(frame: CGRect(x: 0, y: 0, width: 32, height: 32)) + let view = UIView() + view.translatesAutoresizingMaskIntoConstraints = false view.backgroundColor = .foreground view.layer.cornerRadius = 32 / 2 let label = UILabel() label.text = "👑" - label.sizeToFit() - + label.translatesAutoresizingMaskIntoConstraints = false view.addSubview(label) - label.center = view.center + + NSLayoutConstraint.activate([ + label.centerYAnchor.constraint(equalTo: view.centerYAnchor), + label.centerXAnchor.constraint(equalTo: view.centerXAnchor), + ]) view.layer.shadowOffset = CGSize(width: 0, height: 12) view.layer.shadowColor = UIColor.black.withAlphaComponent(0.12).cgColor @@ -64,7 +66,15 @@ class RoomMemberCell: UICollectionViewCell { return view }() - private var profileImage: UIImageView! + private var profileImage: UIImageView = { + let image = UIImageView() + image.clipsToBounds = true + image.layer.masksToBounds = true + image.backgroundColor = .brandColor + image.contentMode = .scaleAspectFill + image.translatesAutoresizingMaskIntoConstraints = false + return image + }() private var reactionView: ReactionView! @@ -83,26 +93,41 @@ class RoomMemberCell: UICollectionViewCell { override init(frame: CGRect) { super.init(frame: frame) - profileImage = UIImageView(frame: CGRect(x: 0, y: 0, width: frame.size.width, height: frame.size.width)) - profileImage.layer.cornerRadius = frame.size.width / 2 - profileImage.clipsToBounds = true - profileImage.backgroundColor = .brandColor - profileImage.contentMode = .scaleAspectFill contentView.addSubview(profileImage) - - nameLabel = UILabel(frame: CGRect(x: 0, y: profileImage.frame.size.height + 4, width: frame.size.width, height: 22)) - nameLabel.font = .rounded(forTextStyle: .body, weight: .regular) - nameLabel.textAlignment = .center - addSubview(nameLabel) - - muteView.frame.origin = CGPoint(x: frame.size.width - 24, y: 0) + contentView.addSubview(nameLabel) contentView.addSubview(muteView) - - speakingView.frame.origin = CGPoint(x: frame.size.width - 24, y: 0) contentView.addSubview(speakingView) - - adminView.frame.origin = CGPoint(x: 0, y: frame.size.width - 32) contentView.addSubview(adminView) + + NSLayoutConstraint.activate([ + muteView.heightAnchor.constraint(equalToConstant: 24), + muteView.widthAnchor.constraint(equalToConstant: 24), + muteView.rightAnchor.constraint(equalTo: rightAnchor), + ]) + + NSLayoutConstraint.activate([ + speakingView.heightAnchor.constraint(equalToConstant: 24), + speakingView.widthAnchor.constraint(equalToConstant: 24), + speakingView.rightAnchor.constraint(equalTo: rightAnchor), + ]) + + NSLayoutConstraint.activate([ + adminView.heightAnchor.constraint(equalToConstant: 32), + adminView.widthAnchor.constraint(equalToConstant: 32), + adminView.bottomAnchor.constraint(equalTo: profileImage.bottomAnchor), + ]) + + NSLayoutConstraint.activate([ + profileImage.leftAnchor.constraint(equalTo: contentView.leftAnchor), + profileImage.rightAnchor.constraint(equalTo: contentView.rightAnchor), + profileImage.heightAnchor.constraint(equalTo: contentView.widthAnchor), + ]) + + NSLayoutConstraint.activate([ + nameLabel.leftAnchor.constraint(equalTo: contentView.leftAnchor), + nameLabel.rightAnchor.constraint(equalTo: contentView.rightAnchor), + nameLabel.topAnchor.constraint(equalTo: profileImage.bottomAnchor, constant: 4), + ]) } required init?(coder _: NSCoder) { @@ -127,7 +152,7 @@ class RoomMemberCell: UICollectionViewCell { } reactionView = ReactionView(frame: CGRect(x: 0, y: 0, width: frame.size.width, height: frame.size.width)) - reactionView.center = profileImage.center + reactionView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(reactionView) if image != "" { @@ -165,4 +190,10 @@ class RoomMemberCell: UICollectionViewCell { profileImage.image = nil user = nil } + + override func layoutSubviews() { + super.layoutSubviews() + + profileImage.layer.cornerRadius = frame.size.width / 2 + } } From 15d6bb82e382ebb3e6c6900b5943254e00366b3b Mon Sep 17 00:00:00 2001 From: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Date: Wed, 10 Mar 2021 23:37:13 +0000 Subject: [PATCH 2/3] Update RoomMemberAccessoryView.swift --- Sources/UI/Room/RoomMemberAccessoryView.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/UI/Room/RoomMemberAccessoryView.swift b/Sources/UI/Room/RoomMemberAccessoryView.swift index 2939e276..73dafbcd 100644 --- a/Sources/UI/Room/RoomMemberAccessoryView.swift +++ b/Sources/UI/Room/RoomMemberAccessoryView.swift @@ -26,6 +26,7 @@ class RoomMemberAccessoryView: UIView { } override func layoutSubviews() { + super.layoutSubviews() layer.cornerRadius = frame.size.width / 2 } } From 80be2c4b3738c81a54e7ef5e769ae4d7d7e57b00 Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Tue, 16 Mar 2021 16:20:28 +0000 Subject: [PATCH 3/3] idk --- Sources/UI/Room/RoomMemberAccessoryViewWithGradient.swift | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Sources/UI/Room/RoomMemberAccessoryViewWithGradient.swift b/Sources/UI/Room/RoomMemberAccessoryViewWithGradient.swift index c7deb0f6..2a5f6757 100644 --- a/Sources/UI/Room/RoomMemberAccessoryViewWithGradient.swift +++ b/Sources/UI/Room/RoomMemberAccessoryViewWithGradient.swift @@ -12,6 +12,7 @@ class RoomMemberAccessoryViewWithGradient: RoomMemberAccessoryView { layer.locations = [0, 1] layer.startPoint = CGPoint(x: 0.25, y: 0.5) layer.endPoint = CGPoint(x: 0.75, y: 0.5) + layer.frame = CGRect(x: 0, y: 0, width: 24, height: 24) layer.transform = CATransform3DMakeAffineTransform(CGAffineTransform(a: 1, b: 1, c: -1, d: 1, tx: 0.5, ty: -0.5)) return layer }() @@ -21,12 +22,6 @@ class RoomMemberAccessoryViewWithGradient: RoomMemberAccessoryView { layer.insertSublayer(gradient, at: 0) } - override func layoutSubviews() { - super.layoutSubviews() - - layer.frame = CGRect(x: 0, y: 0, width: frame.size.width, height: frame.size.height) - } - required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") }