Closed xiaoyao20084321 closed 1 month ago
因为目前indicator初始化的时候,根据collectionview的contentSize进行了布局,所以要初始化的时候有对应正确的contentSize值。 参考以下代码:
for indicator in indicators {
if itemDataSource.isEmpty {
indicator.isHidden = true
}else {
indicator.isHidden = false
let selectedItemFrame = getItemFrameAt(index: selectedIndex)
let indicatorParams = JXSegmentedIndicatorSelectedParams(currentSelectedIndex: selectedIndex,
currentSelectedItemFrame: selectedItemFrame,
selectedType: .unknown,
currentItemContentWidth: dataSource?.segmentedView(self, widthForItemContentAt: selectedIndex) ?? 0,
collectionViewContentSize: CGSize(width: totalContentWidth, height: bounds.size.height))
indicator.refreshIndicatorState(model: indicatorParams)
if indicator.isIndicatorConvertToItemFrameEnabled {
var indicatorConvertToItemFrame = indicator.frame
indicatorConvertToItemFrame.origin.x -= selectedItemFrame.origin.x
itemDataSource[selectedIndex].indicatorConvertToItemFrame = indicatorConvertToItemFrame
}
}
}
JXSegmentedView添加到view上, 如果这个view需要做高度动画, 所以这个view一开始需要给一个高度为0, 然后在动画慢慢变大, 如果这样做的话,JXSegmentedView还会出现,但是 JXSegmentedView的指示器就不显示了
目前解决办法先给一个初始高度 求解决