Animate timeline star and unread indicators

This commit is contained in:
Maurice Parker 2019-10-15 20:59:42 -05:00
parent 42bccc2fea
commit 3faa9d7cde
2 changed files with 23 additions and 7 deletions

View File

@ -15,9 +15,11 @@ struct MasterTimelineDefaultCellLayout: MasterTimelineCellLayout {
static let unreadCircleMarginLeft = CGFloat(integerLiteral: 0) static let unreadCircleMarginLeft = CGFloat(integerLiteral: 0)
static let unreadCircleDimension = CGFloat(integerLiteral: 12) static let unreadCircleDimension = CGFloat(integerLiteral: 12)
static let unreadCircleSize = CGSize(width: MasterTimelineDefaultCellLayout.unreadCircleDimension, height: MasterTimelineDefaultCellLayout.unreadCircleDimension)
static let unreadCircleMarginRight = CGFloat(integerLiteral: 8) static let unreadCircleMarginRight = CGFloat(integerLiteral: 8)
static let starDimension = CGFloat(integerLiteral: 16) static let starDimension = CGFloat(integerLiteral: 16)
static let starSize = CGSize(width: MasterTimelineDefaultCellLayout.starDimension, height: MasterTimelineDefaultCellLayout.starDimension)
static let avatarSize = CGSize(width: 48.0, height: 48.0) static let avatarSize = CGSize(width: 48.0, height: 48.0)
static let avatarMarginRight = CGFloat(integerLiteral: 8) static let avatarMarginRight = CGFloat(integerLiteral: 8)

View File

@ -187,12 +187,30 @@ private extension MasterTimelineTableViewCell {
} }
func updateUnreadIndicator() { func updateUnreadIndicator() {
showOrHideView(unreadIndicatorView, cellData.read || cellData.starred) let hide = cellData.read || cellData.starred
unreadIndicatorView.setNeedsDisplay() self.unreadIndicatorView.isHidden = hide
self.unreadIndicatorView.frame.size = !hide ? CGSize.zero : MasterTimelineDefaultCellLayout.unreadCircleSize
UIView.animate(
withDuration: 0.5,
delay: 0.0,
usingSpringWithDamping: 0.5,
initialSpringVelocity: 0.2,
animations: {
self.unreadIndicatorView.frame.size = !hide ? MasterTimelineDefaultCellLayout.unreadCircleSize : CGSize.zero
})
} }
func updateStarView() { func updateStarView() {
showOrHideView(starView, !cellData.starred) self.starView.isHidden = !self.cellData.starred
self.starView.frame.size = self.cellData.starred ? CGSize.zero : MasterTimelineDefaultCellLayout.starSize
UIView.animate(
withDuration: 0.5,
delay: 0.0,
usingSpringWithDamping: 0.5,
initialSpringVelocity: 0.2,
animations: {
self.starView.frame.size = self.cellData.starred ? MasterTimelineDefaultCellLayout.starSize : CGSize.zero
})
} }
func updateAvatar() { func updateAvatar() {
@ -233,10 +251,6 @@ private extension MasterTimelineTableViewCell {
} }
} }
func showOrHideView(_ view: UIView, _ shouldHide: Bool) {
shouldHide ? hideView(view) : showView(view)
}
func updateSubviews() { func updateSubviews() {
updateTitleView() updateTitleView()
updateSummaryView() updateSummaryView()