agiapp / BRPickerView

BRPickerView 封装的是iOS中常用的选择器组件,主要包括:日期选择器(支持年月日、年月等15种日期样式选择,支持设置星期、至今等)、地址选择器(支持省市区、省市、省三种地区选择)、自定义字符串选择器(支持单列、多列、二级联动、三级联动选择)。支持自定义主题样式,适配深色模式,支持将选择器组件添加到指定容器视图。
https://github.com/agiapp/BRPickerView
MIT License
2.57k stars 446 forks source link

UIPickView 有默认间距, 库中计算column的宽度不合适 #318

Open hupengfei-hinterstellar opened 3 months ago

hupengfei-hinterstellar commented 3 months ago
// 设置列宽
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
    NSInteger columnCount = [self numberOfComponentsInPickerView:pickerView];
    CGFloat columnWidth = self.pickerView.bounds.size.width / columnCount;
    if (self.pickerStyle.columnWidth > 0 && self.pickerStyle.columnWidth <= columnWidth) {
        return self.pickerStyle.columnWidth;
    }
    return columnWidth;
}

单单宽度除以列数会导致长度超出屏幕, 但我没找到系统中这个关于间距的具体值.

若不实现 宽度 的代理方法 则系统会自动调整以适应屏幕,不过这样就失去了灵活性, 所以除了自己给columnWidth设定一个近似值外,还有什么更好的方式吗?

截图使用 375宽 iOS12 机型

image