Reuse layout calcs when possible on timeline
This commit is contained in:
parent
f357f27ae1
commit
a5a5eb1df0
@ -17,6 +17,8 @@ class MasterTimelineTableViewCell: UITableViewCell {
|
|||||||
private let dateView = MasterTimelineTableViewCell.singleLineUILabel()
|
private let dateView = MasterTimelineTableViewCell.singleLineUILabel()
|
||||||
private let feedNameView = MasterTimelineTableViewCell.singleLineUILabel()
|
private let feedNameView = MasterTimelineTableViewCell.singleLineUILabel()
|
||||||
|
|
||||||
|
private var layout: MasterTimelineCellLayout?
|
||||||
|
|
||||||
private lazy var avatarImageView: UIImageView = {
|
private lazy var avatarImageView: UIImageView = {
|
||||||
let imageView = NonIntrinsicImageView(image: AppAssets.feedImage)
|
let imageView = NonIntrinsicImageView(image: AppAssets.feedImage)
|
||||||
imageView.contentMode = .scaleAspectFit
|
imageView.contentMode = .scaleAspectFit
|
||||||
@ -45,25 +47,29 @@ class MasterTimelineTableViewCell: UITableViewCell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func sizeThatFits(_ size: CGSize) -> CGSize {
|
override func sizeThatFits(_ size: CGSize) -> CGSize {
|
||||||
let layout = updatedLayout()
|
if layout == nil {
|
||||||
return CGSize(width: bounds.width, height: layout.height)
|
layout = updatedLayout()
|
||||||
|
}
|
||||||
|
return CGSize(width: bounds.width, height: layout!.height)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func layoutSubviews() {
|
override func layoutSubviews() {
|
||||||
|
|
||||||
super.layoutSubviews()
|
super.layoutSubviews()
|
||||||
|
|
||||||
let layout = updatedLayout()
|
if layout == nil {
|
||||||
|
layout = updatedLayout()
|
||||||
|
}
|
||||||
|
|
||||||
unreadIndicatorView.setFrameIfNotEqual(layout.unreadIndicatorRect)
|
unreadIndicatorView.setFrameIfNotEqual(layout!.unreadIndicatorRect)
|
||||||
starView.setFrameIfNotEqual(layout.starRect)
|
starView.setFrameIfNotEqual(layout!.starRect)
|
||||||
avatarImageView.setFrameIfNotEqual(layout.avatarImageRect)
|
avatarImageView.setFrameIfNotEqual(layout!.avatarImageRect)
|
||||||
setFrame(for: titleView, rect: layout.titleRect)
|
setFrame(for: titleView, rect: layout!.titleRect)
|
||||||
setFrame(for: summaryView, rect: layout.summaryRect)
|
setFrame(for: summaryView, rect: layout!.summaryRect)
|
||||||
feedNameView.setFrameIfNotEqual(layout.feedNameRect)
|
feedNameView.setFrameIfNotEqual(layout!.feedNameRect)
|
||||||
dateView.setFrameIfNotEqual(layout.dateRect)
|
dateView.setFrameIfNotEqual(layout!.dateRect)
|
||||||
|
|
||||||
separatorInset = layout.separatorInsets
|
separatorInset = layout!.separatorInsets
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -228,6 +234,7 @@ private extension MasterTimelineTableViewCell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func updateSubviews() {
|
func updateSubviews() {
|
||||||
|
layout = nil
|
||||||
updateTitleView()
|
updateTitleView()
|
||||||
updateSummaryView()
|
updateSummaryView()
|
||||||
updateDateView()
|
updateDateView()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user