私はそのpickerView:viewForRow:forComponent:reusingView
方法を知っていますが、それを使用すると、別のテキストの色を使用するように変更するview
にはreusingView:
どうすればよいですか? ビューを使用しview.backgroundColor = [UIColor whiteColor];
ないと、もう表示されません。
質問する
78098 次
8 に答える
329
デリゲート メソッドには、より洗練された関数があります。
目的 C:
- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSString *title = @"sample title";
NSAttributedString *attString =
[[NSAttributedString alloc] initWithString:title attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
return attString;
}
UIViews
選択バーの色も変更したい場合は、ピッカーの高さを 180 にするために、 を含むビューにUIPickerView
35 ポイントの間隔で2 つを追加する必要があることがわかりました。
スウィフト 3:
func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
let string = "myString"
return NSAttributedString(string: string, attributes: [NSForegroundColorAttributeName:UIColor.white])
}
スウィフト 4:
func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
let string = "myString"
return NSAttributedString(string: string, attributes: [NSAttributedStringKey.foregroundColor: UIColor.white])
}
スウィフト 4.2:
func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
let string = "myString"
return NSAttributedString(string: string, attributes: [NSAttributedString.Key.foregroundColor: UIColor.white])
}
メソッドを使用するときは覚えておいてください: を使用するtitleForRowInComponent()
ときは決して呼び出されないため、実装する必要はありませんattributedTitleForRow()
。
于 2013-11-06T23:44:34.623 に答える
23
- ストーリーボードに移動
- ピッカービューを選択
- ID インスペクターに移動します (3 番目のタブ)
- ユーザー定義のランタイム属性を追加
- KeyPath = テキストの色
- タイプ = 色
- 値 = [選択した色]
于 2014-05-07T14:18:29.153 に答える
7
Xamarin では、UIPickerModelView メソッド GetAttributedTitle をオーバーライドします。
public override NSAttributedString GetAttributedTitle(UIPickerView picker, nint row, nint component)
{
// change text white
string title = GetTitle (picker, row, component); // get current text from UIPickerViewModel::GetTitle
NSAttributedString ns = new NSAttributedString (title, null, UIColor.White); // null = font, use current font
return ns;
}
于 2015-05-16T14:51:47.560 に答える
2
2 つのコンポーネントを使用するpickerViewで同じ問題に遭遇しました。私の解決策は、いくつかの変更を加えた上に似ています。2 つのコンポーネントを使用しているため、2 つの異なる配列からプルする必要があります。
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor blueColor];
label.textColor = [UIColor whiteColor];
label.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:18];
//WithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 60)];
if(component == 0)
{
label.text = [countryArray objectAtIndex:row];
}
else
{
label.text = [cityArray objectAtIndex:row];
}
return label;
}
于 2014-03-23T21:20:23.127 に答える
2
Swift 4 (受け入れられた回答への更新)
extension MyViewController: UIPickerViewDelegate{
}
func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
return NSAttributedString(string: "your-title-goes-here", attributes: [NSAttributedStringKey.foregroundColor: UIColor.white])
}
}
于 2017-12-11T10:13:00.197 に答える
1
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel* pickerLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 37)];
pickerLabel.text = @"text";
pickerLabel.textColor = [UIColor redColor];
return pickerLabel;
}
于 2016-12-23T05:33:45.403 に答える