将 UIPickerView 的组件设置为分隔符
set a component of UIPickerView as a separator
我创建了一个十进制数 UIPickerView
。我希望第二个组件只是一个常量点字符串 (.) 成为分隔符,我的意思是:
1) 不动
2) 其宽度小于其他组件
3) 与其他组件相比颜色不同
代码如下:
#pragma mark - UIPickerView : Datasource Protocol
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 3;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if(component == 2)
return 10;
if(component == 1)
return 1;
else
return 1000;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if(component == 1)
return @".";
else
return [NSString stringWithFormat:@"%ld", (long)row];
}
我该怎么做?
您可以取 UILable
并将文本设置为“.” (即点),在选择器视图中添加标签。
然后在相关委托中取 3 个组件,第二个组件 return nil.
这是代码:
按照你的设计方法,我在viewDidLoad
myPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
myPickerView.delegate = self;
myPickerView.showsSelectionIndicator = YES;
[self.view addSubview:myPickerView];
label = [[UILabel alloc] initWithFrame:CGRectMake(145, 76, 36, 36)];
label.font = [UIFont boldSystemFontOfSize:40];
label.layer.cornerRadius = 18.0;
label.layer.masksToBounds = YES;
label.text = @".";
[label setTextColor:[UIColor darkGrayColor]];
label.backgroundColor = [UIColor clearColor];
label.textAlignment = NSTextAlignmentCenter;
label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake (0,1);
[myPickerView addSubview:label];
那么在delegate中就是这样
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 3;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (component ==0) {
return self.arrItemsTop.count;
}else if (component == 1){
return 0;
}else
return self.arrItemsOther.count;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if (component == 0) {
return self.arrItemsTop[row];
}
else if (component == 1){
return nil;
}
else{
return self.arrItemsOther[row];
}
}
注意:arrItemsTop
是保存左侧值的数组,arrItemsOthers
是保存右侧值的数组
输出:
希望对您有所帮助..
编码愉快。
我创建了一个十进制数 UIPickerView
。我希望第二个组件只是一个常量点字符串 (.) 成为分隔符,我的意思是:
1) 不动
2) 其宽度小于其他组件
3) 与其他组件相比颜色不同
代码如下:
#pragma mark - UIPickerView : Datasource Protocol
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 3;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if(component == 2)
return 10;
if(component == 1)
return 1;
else
return 1000;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if(component == 1)
return @".";
else
return [NSString stringWithFormat:@"%ld", (long)row];
}
我该怎么做?
您可以取 UILable
并将文本设置为“.” (即点),在选择器视图中添加标签。
然后在相关委托中取 3 个组件,第二个组件 return nil.
这是代码:
按照你的设计方法,我在viewDidLoad
myPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
myPickerView.delegate = self;
myPickerView.showsSelectionIndicator = YES;
[self.view addSubview:myPickerView];
label = [[UILabel alloc] initWithFrame:CGRectMake(145, 76, 36, 36)];
label.font = [UIFont boldSystemFontOfSize:40];
label.layer.cornerRadius = 18.0;
label.layer.masksToBounds = YES;
label.text = @".";
[label setTextColor:[UIColor darkGrayColor]];
label.backgroundColor = [UIColor clearColor];
label.textAlignment = NSTextAlignmentCenter;
label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake (0,1);
[myPickerView addSubview:label];
那么在delegate中就是这样
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 3;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (component ==0) {
return self.arrItemsTop.count;
}else if (component == 1){
return 0;
}else
return self.arrItemsOther.count;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if (component == 0) {
return self.arrItemsTop[row];
}
else if (component == 1){
return nil;
}
else{
return self.arrItemsOther[row];
}
}
注意:arrItemsTop
是保存左侧值的数组,arrItemsOthers
是保存右侧值的数组
输出:
希望对您有所帮助..
编码愉快。