JXSegmentedView
JXSegmentedView copied to clipboard
JXSegmentedTitleImageDataSource (图片在上或者在下的时候宽度计算)
open override func preferredSegmentedView(_ segmentedView: JXSegmentedView, widthForItemAt index: Int) -> CGFloat {
var width = super.preferredSegmentedView(segmentedView, widthForItemAt: index)
if itemWidth == JXSegmentedViewAutomaticDimension {
switch titleImageType {
case .leftImage, .rightImage:
width += titleImageSpacing + imageSize.width
case .topImage, .bottomImage:
width = max(itemWidth, imageSize.width)
case .onlyImage:
width = imageSize.width
case .onlyTitle:
break
}
}
return width
}
上面应该取width 不应该用itemWidth
我也遇到了同样的问题,新版本会修复吗 @pujiaxin33
我也遇到了同样的问题,新版本会修复吗 @pujiaxin33
我尝试了继承 JXSegmentedTitleImageDataSource 重写 override func preferredSegmentedView(_ segmentedView: JXSegmentedView, widthForItemAt index: Int) -> CGFloat { var width = itemWidthIncrement if itemWidth == JXSegmentedViewAutomaticDimension { width += (dataSource[index] as! JXSegmentedTitleItemModel).textWidth }else { width += itemWidth }
if itemWidth == JXSegmentedViewAutomaticDimension {
switch titleImageType {
case .leftImage, .rightImage:
width += titleImageSpacing + imageSize.width
case .topImage, .bottomImage:
width = max(width, imageSize.width)
case .onlyImage:
width = imageSize.width
case .onlyTitle:
break
}
}
return width
}
但是 func segmentedView(_ segmentedView: JXSegmentedView, widthForItemContentAt index: Int) -> CGFloat 无法重写 (使用pod管理的 此方法使用的public) 查看了一下 如果不是一些特定的 例如缩放 获取模型中的宽度等 这个方法不重写 好像也不影响 如果有问题 请指出
我是这样重写的,宽度就正常了
override func preferredSegmentedView(_ segmentedView: JXSegmentedView, widthForItemAt index: Int) -> CGFloat {
var width = (dataSource[index] as! JXSegmentedTitleImageItemModel).textWidth
if itemWidth == JXSegmentedViewAutomaticDimension {
switch titleImageType {
case .leftImage, .rightImage:
width += titleImageSpacing + imageSize.width
case .topImage, .bottomImage:
width = max(width, imageSize.width)
case .onlyImage:
width = imageSize.width
case .onlyTitle:
break
}
}
return width
}
我是这样重写的,宽度就正常了
override func preferredSegmentedView(_ segmentedView: JXSegmentedView, widthForItemAt index: Int) -> CGFloat { var width = (dataSource[index] as! JXSegmentedTitleImageItemModel).textWidth if itemWidth == JXSegmentedViewAutomaticDimension { switch titleImageType { case .leftImage, .rightImage: width += titleImageSpacing + imageSize.width case .topImage, .bottomImage: width = max(width, imageSize.width) case .onlyImage: width = imageSize.width case .onlyTitle: break } } return width }
已参考,修复。