@@ -18,12 +18,12 @@ class CardView: UIView {
1818 }
1919 var minWidth: 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.9638966278, green: 0.9734401588, blue: 0.9734401588, 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
@@ -108,7 +93,7 @@ class CardView: UIView {
10893 photoView.verticalPadding = 8
10994 photoView.padding = CGPoint.zero
11095 photoView.maxWidth = width
111− var maxPhotoDim: CGFloat = maxAttachmentDim
96+ var maxPhotoDim: CGFloat = 150
11297 if let attachments = post?.attachments {
11398 for attachment in attachments {
11499 if let v = attachment.value {
@@ -118,7 +103,6 @@ class CardView: UIView {
118103 var pHeight = photo.height.value >>> {CGFloat($0)} {
119104 let photoV = UIImageView()
120105 photoV.layer.minificationFilter = kCAFilterTrilinear
121− photoV.contentMode = .scaleAspectFill
122106 photo.image?.load(into: photoV)
123107 var k: CGFloat!
124108 if pWidth > pHeight {
@@ -141,10 +125,10 @@ class CardView: UIView {
141125 photoView.layoutIfNeeded()
142126
143127 var textHeight = height
144− textHeight -= padding.y * 2 + vPadding1 + userView.frame.height
128+ textHeight -= padding.y + vPadding1 + userView.frame.height
145129 if let count = post?.attachments.count{
146130 if count > 0 {
147− textHeight -= vPadding2 + photoView.frame.height
131+ textHeight -= vPadding2 + photoView.frame.height + padding.y
148132 }
149133 }
150134 print(textHeight)
@@ -156,25 +140,9 @@ class CardView: UIView {
156140 let bodyWidth: Double = Double(width)
157141 body.font = UIFont.systemFont(ofSize: 22, weight: UIFontWeightSemibold)
158142 body.text = post?.body
159− body.textColor = UIColor.darkText
160143 let size = body.textRect(forBounds: CGRect(x: 0, y: 0, width: bodyWidth, height: Double.infinity), limitedToNumberOfLines: 0).size
144+ body.frame.size.height = min(size.height, textHeight)
161145 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− }
178146
179147 largeStack.addArrangedSubview(.view(body))
180148
@@ -189,8 +157,5 @@ class CardView: UIView {
189157
190158 frame.size = CGSize(width: width + padding.x * 2, height: min(height, largeStack.frame.height))
191159
192− gradient.frame = self.bounds
193− gradient.endPoint = CGPoint(x: 0.5, y: bounds.height / height)
194−
195160 }
196161}