【发布时间】:2018-03-06 07:27:44
【问题描述】:
默认的“UIPickerView”在顶部和底部有一条灰色细线,我想删除它,但我不知道该怎么做。
是否有可以设置为清除的属性?
【问题讨论】:
-
我知道这可能有点假,但你有没有试过把它放在一个高度稍小的 UIView 中(不要忘记“剪辑到边界”)?
标签: ios swift uipickerview
默认的“UIPickerView”在顶部和底部有一条灰色细线,我想删除它,但我不知道该怎么做。
是否有可以设置为清除的属性?
【问题讨论】:
标签: ios swift uipickerview
你必须继承UIPickerView,例如:
class MyPickerView: UIPickerView {
override func layoutSubviews() {
super.layoutSubviews()
self.layer.borderWidth = 0 // Main view rounded border
// Component borders
self.subviews.forEach {
$0.layer.borderWidth = 0
$0.isHidden = $0.frame.height <= 1.0
}
}
}
【讨论】:
在选择器视图数据源方法中
func numberOfComponents(in pickerView: UIPickerView) -> Int {
pickerView.subviews.forEach({
$0.isHidden = $0.frame.height < 1.0
})
return 1
}
线条会消失
【讨论】:
我认为你需要删除选中行的两行,如果是这样你可以使用pickerView的titleForRow或viewForRow委托方法,并在委托方法中使用以下代码。
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
[[pickerView.subviews objectAtIndex:1] setHidden:TRUE];
[[pickerView.subviews objectAtIndex:2] setHidden:TRUE];
}
或
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view
{
[[pickerView.subviews objectAtIndex:1] setHidden:TRUE];
[[pickerView.subviews objectAtIndex:2] setHidden:TRUE];
}
【讨论】: