IPhoneアプリのUIPickerView
の高さを低くして、1行1列のみが表示されるようにします。ピッカービューの高さは、行の高さと同じである必要があります。
InterfaceBuilderを使用してUIPickerView
を作成していますが、このコントロールのサイズを変更する簡単な方法が見つかりません。
UIPickerView
をどのように縮小しますか?
実際には、アフィン変換を囲んでいるビューに適用することで、UIPickerView全体をわずかに縮小できます。例えば:
CGSize pickerSize = [pickerView sizeThatFits:CGSizeZero];
pickerTransformView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, pickerSize.width, pickerSize.height)];
pickerTransformView.transform = CGAffineTransformMakeScale(0.75f, 0.75f);
[pickerTransformView addSubview:pickerView];
[self.view addSubview:pickerTransformView];
[pickerTransformView release];
ピッカーを包含ビュー内に配置し、そのビューにスケーリング変換を適用することにより、ピッカーを元のサイズの75%にスケーリングします。変換をUIPickerViewに直接適用すると、望ましくない描画アーティファクトが発生します。
ただし、探している種類のサイズ変更は、カスタムコントロールを作成することで最も効果的です。
それは可能で簡単です!
Nibファイルをプレーンテキストとして開き、ピッカービューを見つけて、メジャーを調整するだけです。
<object class="IBUIPickerView" id="783900772">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{85, 68}, {150, 116}}</string>
それで全部です!
InterfaceBuilderで簡単なUIViewを作成します。目的の位置とサイズを設定し、制約を追加します。 「サブビューのクリップ」チェックボックスをオンにします。次に、ピッカービューをこのビュー内にサブビューとしてドラッグアンドドロップします。ピッカーがコンテナ内で水平方向と垂直方向に整列するように制約を追加します。仕事をする必要があります。
私の知る限り、縮小するとめちゃくちゃになります。
a)UITableView+UIPickerView
これを行うには、「UITableView+UIPickerView
の行を使用することをお勧めします。WindowsのdropDownListのように、tableViewの行を使用できます。この行をタップすると、pickerViewが表示されます(最初は非表示) )。
b)tableViewにデータの長いリストがあり、データを選択する必要があるアイテムが1つだけの場合は、次の方法を使用してビューをスクロールする必要があります(pickerViewは上下に移動するため、必ず元の位置を計算してください)。一緒):
-(void)setViewMove:(BOOL)moveUP offset:(CGFloat)offset
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = self.view.frame;
if(moveUP)
{
rect.Origin.y-=offset;
rect.size.height+=offset;
}
else //move down
{
rect.Origin.y+=offset;
rect.size.height-=offset;
}
self.view.frame = rect;
[UIView commitAnimations];
}
c)ピッカーに別のビューを追加し、何かを選択したらこのビューに戻ることもできます。
私の結論は次のとおりです。
tableViewに数行しかない場合は、を使用します。
tableViewに多数の行があり、そのうちの1つだけがピッカーを必要とする場合は、bを使用します。
tableViewに多数の行があり、それらの多くにピッカーが必要な場合は、cを使用します。