2016-10-04 3 views
2

Я создал десятичное число UIPickerView. Я хочу, чтобы второй компонент, который как раз постоянная точка строка стала в качестве разделителя, я имею в виду (.):установить компонент UIPickerView в качестве разделителя

1) Он не двигается

2) Его ширина меньше, чем другие компоненты

3) Его цвет отличается по сравнению с другими компонентами

enter image description here

Вот код:

#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]; 

} 

Как это сделать?

+2

Возможно, вы захотите подклассифицировать представление выбора и добавить в виде подземелья представление точки (например, метку). Я бы поставил его - и вывел его на передний план - в переопределенном методе layoutSubviews. –

+0

Попробуйте использовать 2 компонента 'UIPickerView' и добавьте' UILabel' над этим 'UIPickerView'. – Mrunal

ответ

1

Вы можете принять UILable и задать текст как "." (например, Dot), добавьте метку в виде выбора. Затем возьмите 3 компонента в соответствующем делетете и для второго возвращаемого компонента.

Вот код:

В вашем методе проектирования, я сделал это в 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]; 

Затем в делегат будет как этот

- (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]; 
    } 
} 

NB: arrItemsTop - массив, содержащий значения левой стороны, и arrItemsOthers - массив, содержащий righ значение т сторона

Выход:

enter image description here

Надеется, что это помогает ..

Счастливого кодированию.

+0

Пожалуйста, проголосуйте, чтобы поддержать ответ. – Janmenjaya