10

UIPickerView の曲率を iOS 7 タイマーのように変更しようとしています。

ここに私が持っているものがあります: ここに画像の説明を入力

選択した行の 2 と 4 が 3 から大きくずれていることに注意してください。2 と 4 が 3 の真上と真下にある iOS7 のタイマーのように、より「フラット」にする方法はありますか?

これが私がこれまでに試したことです:

  1. で遊んで- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component

  2. 内でカスタム UIView とカスタム UILabel オフセットを使用する

どれも機能していないようです。

何か助けはありますか?

4

4 に答える 4

2

2 つのコンポーネントの代わりに、次のスニペットのように 4 つのコンポーネントを作成してみてください。

- (void)viewDidLoad
{
    [super viewDidLoad];
     self.model  = @[@"1",@"2",@"3",@"4",@"5",@"6"];
}


- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 4;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    NSInteger numberOfRows;
    if(component == 0 || component == 2)
    {
        numberOfRows = [self.model count];
    }
    else
    {
        numberOfRows = 1;
    }
    return numberOfRows;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    NSString* title;
    switch (component) {
        case 0:
        case 2:
            title = self.model[row];
            break;
        case 1:
            title = @"ft";
            break;
        case 3:
            title = @"in";
            break;
        default:
            break;
    }
    return title;
}
于 2013-11-07T01:44:20.717 に答える
0

コンポーネントの数 == 1 の場合、そのようなズーム + オフセット効果がないことに気付きました。

これを修正するために実装したハックは、画面に 2 つの UIPickerView を配置し、それに応じてデリゲートとデータソース関数を実装することでした。

于 2013-11-07T00:51:06.053 に答える