-1

由于前 2 个答案的修改:我要修改的不是 UIPickerview 的高度。我想要的是使 UIPicker 的内容从 UIPicker 的上侧开始。这是一个例子: 在此处输入图像描述

我想删除此处所附图像中显示的边距。我希望 Kg(s) 位于 UIPickerView 的上边界,没有中间部分

任何的想法?

通过工具栏,UIPickerView 嵌入在 UIView 中。所以视图层次结构是:View(parent)->Toolbar(child), UIPickerView(child)

View 在我的 viewController 中被声明为 customPicker。这是代码: 在vi​​ewController.h 中

@interface myViewController:UIViewController<UIPickerViewDataSource, UIPickerViewDelegate>

@property (weak, nonatomic) IBoutlet UIView *customPicker;

@end

viewController.m 中

- (void) viewDidLoad{
self.customPicker.frame = CGRectMake(0, CGRectGetMaxY(self.view.frame), CGRectGetWidth(self.customPicker.frame), CGRectGetHeight(self.customPicker.frame));
    [self.view addSubview:self.customPicker];
}

然后我使用 setPickerHidden 方法为 View 设置动画以显示或隐藏它。

在此先感谢您的帮助!

4

4 回答 4

2

这是不可能的。如果您需要不同样式的“UIPickerView”,您将自行开发。

于 2012-11-13T11:26:36.797 回答
0

你不能改变 UIPickerView 的高度。实际上,您只能修改选择器的宽度。更多信息在这里

于 2012-11-13T11:38:41.220 回答
0

您可以使选取器从特定行(例如第 2 行或第 3 行)开始,以便最初不显示边距。但是,用户仍然可以向下滚动它,当它到达选择器内容的边界时,它仍然看起来像上面的示例。

或者,您可以创建无限选择器视图的效果(尽管实际上它实际上只是一个具有很多行的选择器视图)。

请参阅此处: 如何使 UIPickerView 组件环绕?

于 2013-02-12T09:29:19.287 回答
0

于 2021 年回答

现在我们可以使用 UIPickerViewDelegate 创建一个没有边距的选择器。

演示

让picker填充容器(蓝色边框),然后实现rowHeight委托方法并返回一个接近容器高度的值。完整代码在这里:

class PickerViewWrapper: UIView, UIPickerViewDataSource, UIPickerViewDelegate {
    
    // Make the return value of this delegate method object close to view height
    func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
        return 60
    }
    
    let customPickerView = UIPickerView()
    let labelTexts = ["Day","Week","Month","Year"]
    
    init() {
        super.init(frame: .zero)
        customPickerView.dataSource = self
        customPickerView.delegate = self
        self.addSubview(customPickerView)
        

        // Let picker fill container view.
        customPickerView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            customPickerView.leadingAnchor.constraint(equalTo: self.leadingAnchor),
            customPickerView.trailingAnchor.constraint(equalTo: self.trailingAnchor),
            customPickerView.topAnchor.constraint(equalTo: self.topAnchor),
            customPickerView.bottomAnchor.constraint(equalTo: self.bottomAnchor)
        ])
    }
    
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        1
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return labelTexts.count
    }

    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
        let pickerLabel = UILabel()
        pickerLabel.text = labelTexts[row]
        pickerLabel.sizeToFit()
        return pickerLabel
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
于 2021-08-08T00:04:28.600 回答