Fix action list item icon insets

This commit is contained in:
Ilya Laktyushin 2021-11-09 22:54:10 +04:00
parent 7a29cd490f
commit 434a30fd6a
2 changed files with 10 additions and 4 deletions

View File

@ -163,21 +163,25 @@ class ItemListPeerActionItemNode: ListViewItemNode {
updatedTheme = item.presentationData.theme updatedTheme = item.presentationData.theme
} }
let leftInset: CGFloat let leftInset: CGFloat
let iconOffset: CGFloat
let verticalInset: CGFloat let verticalInset: CGFloat
let verticalOffset: CGFloat let verticalOffset: CGFloat
switch item.height { switch item.height {
case .generic: case .generic:
iconOffset = 1.0
verticalInset = 11.0 verticalInset = 11.0
verticalOffset = 0.0 verticalOffset = 0.0
leftInset = (item.icon == nil ? 16.0 : 59.0) + params.leftInset leftInset = (item.icon == nil ? 16.0 : 59.0) + params.leftInset
case .peerList: case .peerList:
iconOffset = 3.0
verticalInset = 14.0 verticalInset = 14.0
verticalOffset = 0.0 verticalOffset = 0.0
leftInset = 65.0 + params.leftInset leftInset = 65.0 + params.leftInset
case .compactPeerList: case .compactPeerList:
verticalInset = 14.0 iconOffset = 3.0
verticalInset = 11.0
verticalOffset = 0.0 verticalOffset = 0.0
leftInset = 59.0 + params.leftInset leftInset = 65.0 + params.leftInset
} }
let editingOffset: CGFloat = (item.editing ? 38.0 : 0.0) let editingOffset: CGFloat = (item.editing ? 38.0 : 0.0)
@ -227,7 +231,7 @@ class ItemListPeerActionItemNode: ListViewItemNode {
strongSelf.iconNode.image = item.icon strongSelf.iconNode.image = item.icon
if let image = item.icon { if let image = item.icon {
transition.updateFrame(node: strongSelf.iconNode, frame: CGRect(origin: CGPoint(x: params.leftInset + editingOffset + floor((leftInset - params.leftInset - image.size.width) / 2.0) + 3.0, y: floor((contentSize.height - image.size.height) / 2.0)), size: image.size)) transition.updateFrame(node: strongSelf.iconNode, frame: CGRect(origin: CGPoint(x: params.leftInset + editingOffset + floor((leftInset - params.leftInset - image.size.width) / 2.0) + iconOffset, y: floor((contentSize.height - image.size.height) / 2.0)), size: image.size))
} }
if strongSelf.backgroundNode.supernode == nil { if strongSelf.backgroundNode.supernode == nil {

View File

@ -90,8 +90,10 @@ private final class PeerInfoScreenActionItemNode: PeerInfoScreenItemNode {
let sideInset: CGFloat = 16.0 + safeInsets.left let sideInset: CGFloat = 16.0 + safeInsets.left
var leftInset = (item.icon == nil ? sideInset : sideInset + 29.0 + 16.0) var leftInset = (item.icon == nil ? sideInset : sideInset + 29.0 + 16.0)
var iconInset = sideInset
if case .peerList = item.alignment { if case .peerList = item.alignment {
leftInset += 5.0 leftInset += 5.0
iconInset += 5.0
} }
let rightInset = sideInset let rightInset = sideInset
let separatorInset = item.icon == nil ? sideInset : leftInset - 1.0 let separatorInset = item.icon == nil ? sideInset : leftInset - 1.0
@ -122,7 +124,7 @@ private final class PeerInfoScreenActionItemNode: PeerInfoScreenItemNode {
self.addSubnode(self.iconNode) self.addSubnode(self.iconNode)
} }
self.iconNode.image = generateTintedImage(image: icon, color: textColorValue) self.iconNode.image = generateTintedImage(image: icon, color: textColorValue)
let iconFrame = CGRect(origin: CGPoint(x: sideInset, y: floorToScreenPixels((height - icon.size.height) / 2.0)), size: icon.size) let iconFrame = CGRect(origin: CGPoint(x: iconInset, y: floorToScreenPixels((height - icon.size.height) / 2.0)), size: icon.size)
transition.updateFrame(node: self.iconNode, frame: iconFrame) transition.updateFrame(node: self.iconNode, frame: iconFrame)
} else if self.iconNode.supernode != nil { } else if self.iconNode.supernode != nil {
self.iconNode.image = nil self.iconNode.image = nil