@@ -16,14 +16,14 @@ class CardView: UIView {
1616 update()
1717 }
1818 }
19− var minWidth: CGFloat = 300 {
19+ var width: CGFloat = 300 {
2020 didSet {
21−// update()
21+ update()
2222 }
2323 }
2424 var height: CGFloat = 400 {
2525 didSet {
26−// update()
26+ update()
2727 }
2828 }
2929
@@ -31,32 +31,17 @@ class CardView: UIView {
3131 super.init(frame: frame)
3232 layer.masksToBounds = true
3333 layer.cornerRadius = 20
34− gradient.colors = [#colorLiteral(red: 0.9841352105, green: 0.9841352105, blue: 0.9841352105, alpha: 1).cgColor, #colorLiteral(red: 0.9456828237, green: 0.9456828237, blue: 0.9456828237, alpha: 1).cgColor]
35− gradient.startPoint = CGPoint(x: 0.5, y: 0)
36− gradient.endPoint = CGPoint(x: 0.5, y: 1)
37− layer.addSublayer(gradient)
38−// backgroundColor = #colorLiteral(red: 0.9638966278, green: 0.9734401588, blue: 0.9734401588, alpha: 1)
34+ backgroundColor = #colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)
3935 }
4036
4137 required init?(coder aDecoder: NSCoder) {
4238 fatalError("init(coder:) has not been implemented")
4339 }
44−
45− private let gradient = CAGradientLayer()
46−
4740
4841 private let padding = CGPoint(x: 32, y: 32)
4942 private let vPadding1: CGFloat = 16
5043 private let vPadding2: CGFloat = 16
51− private var minTextHeight: CGFloat {
52− return CGFloat(height * 0.2)
53− }
54− private let gradientRatio: CGFloat = 0.2
55− private let minGradientAmount: CGFloat = 70
56− private let hiddenByGradient: CGFloat = 10
57− private var maxAttachmentDim: CGFloat {
58− return minWidth / 2.3
59− }
44+ private let minTextHeight: CGFloat = 50
6045
6146// private let avatar = UIImage()
6247// private let name = UIImage()
@@ -69,9 +54,10 @@ class CardView: UIView {
6954 addSubview(largeStack)
7055
7156 let userView = StackView(axis: .horizontal, alignment: .center)
57+// userView.backgroundColor = #colorLiteral(red: 0.5568627715, green: 0.3529411852, blue: 0.9686274529, alpha: 1)
7258
7359
74− let avatarDim: CGFloat = 64
60+ let avatarDim: CGFloat = 50
7561 let avatar = UIImageView()
7662 post?.owner?.avatar?.load(into: avatar)
7763 avatar.layer.cornerRadius = avatarDim/2
@@ -88,7 +74,6 @@ class CardView: UIView {
8874 let lastName = post?.owner?.lastName ?? ""
8975 userName.text = "\(firstName) \(lastName)"
9076 userName.font = UIFont.systemFont(ofSize: 28, weight: UIFontWeightHeavy)
91− userName.textColor = UIColor.darkText
9277 userName.sizeToFit()
9378 userView.addArrangedSubview(.view(userName))
9479
@@ -99,16 +84,12 @@ class CardView: UIView {
9984 largeStack.addArrangedSubview(.spacer(vPadding1))
10085
10186
102− let width = max(minWidth - 2 * padding.x, userView.frame.width)
103−
104−
10587 let photoView = CollectionView()
10688 photoView.alignment = .top
10789 photoView.horizontalPadding = 8
10890 photoView.verticalPadding = 8
10991 photoView.padding = CGPoint.zero
110− photoView.maxWidth = width
111− var maxPhotoDim: CGFloat = maxAttachmentDim
92+ var maxPhotoDim: CGFloat = 150
11293 if let attachments = post?.attachments {
11394 for attachment in attachments {
11495 if let v = attachment.value {
@@ -117,8 +98,6 @@ class CardView: UIView {
11798 if var pWidth = photo.width.value >>> {CGFloat($0)},
11899 var pHeight = photo.height.value >>> {CGFloat($0)} {
119100 let photoV = UIImageView()
120− photoV.layer.minificationFilter = kCAFilterTrilinear
121− photoV.contentMode = .scaleAspectFill
122101 photo.image?.load(into: photoV)
123102 var k: CGFloat!
124103 if pWidth > pHeight {
@@ -141,7 +120,7 @@ class CardView: UIView {
141120 photoView.layoutIfNeeded()
142121
143122 var textHeight = height
144− textHeight -= padding.y * 2 + vPadding1 + userView.frame.height
123+ textHeight -= padding.y + vPadding1 + userView.frame.height
145124 if let count = post?.attachments.count{
146125 if count > 0 {
147126 textHeight -= vPadding2 + photoView.frame.height
@@ -153,28 +132,12 @@ class CardView: UIView {
153132
154133 let body = UILabel()
155134 body.numberOfLines = 0
156− let bodyWidth: Double = Double(width)
135+ let bodyWidth: Double = Double(width - padding.x * 2)
157136 body.font = UIFont.systemFont(ofSize: 22, weight: UIFontWeightSemibold)
158137 body.text = post?.body
159− body.textColor = UIColor.darkText
160138 let size = body.textRect(forBounds: CGRect(x: 0, y: 0, width: bodyWidth, height: Double.infinity), limitedToNumberOfLines: 0).size
139+ body.frame.size.height = min(size.height, textHeight)
161140 body.frame.size.width = size.width
162− if size.height > textHeight {
163− body.frame.size.height = textHeight
164− let maskView = UIView()
165− let maskLayer = CAGradientLayer()
166− maskLayer.colors = [UIColor.black.cgColor, UIColor.clear.cgColor]
167− maskLayer.endPoint = CGPoint(x: 0.5, y: 1 - (hiddenByGradient/textHeight))
168− let minPoint = minGradientAmount / textHeight
169− maskLayer.startPoint = CGPoint(x: 0.5, y: 1 - max(minPoint, gradientRatio))
170− print(maskLayer.startPoint)
171− maskLayer.frame = body.bounds
172− maskView.frame = body.bounds
173− maskView.layer.addSublayer(maskLayer)
174− body.mask = maskView
175− } else {
176− body.frame.size.height = size.height
177− }
178141
179142 largeStack.addArrangedSubview(.view(body))
180143
@@ -185,12 +148,7 @@ class CardView: UIView {
185148 }
186149 }
187150
188− largeStack.layoutIfNeeded()
189−
190− frame.size = CGSize(width: width + padding.x * 2, height: min(height, largeStack.frame.height))
191−
192− gradient.frame = self.bounds
193− gradient.endPoint = CGPoint(x: 0.5, y: bounds.height / height)
151+ frame.size = CGSize(width: width, height: height)
194152
195153 }
196154}