【问题标题】:Remove UIPickerView Borders删除 UIPickerView 边框
【发布时间】:2018-03-06 07:27:44
【问题描述】:

默认的“UIPickerView”在顶部和底部有一条灰色细线,我想删除它,但我不知道该怎么做。

是否有可以设置为清除的属性?

【问题讨论】:

  • 我知道这可能有点假,但你有没有试过把它放在一个高度稍小的 UIView 中(不要忘记“剪辑到边界”)?

标签: ios swift uipickerview


【解决方案1】:

你必须继承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
        }
    }

}

【讨论】:

  • 太棒了!就是这样!谢谢!
【解决方案2】:

在选择器视图数据源方法中

 func numberOfComponents(in pickerView: UIPickerView) -> Int {

    pickerView.subviews.forEach({
        $0.isHidden = $0.frame.height < 1.0
    })
    return 1

}

线条会消失

【讨论】:

    【解决方案3】:

    我认为你需要删除选中行的两行,如果是这样你可以使用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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多