我知道pickerView:viewForRow:forComponent:reusingView
方法,但是當使用view
時,它會通過reusingView:
如何將其更改爲使用不同的文本顏色?如果我使用view.backgroundColor = [UIColor whiteColor];
,則不再顯示任何視圖。如何更改iOS 7下UIPickerView中文本的顏色?
回答
有一個在委託方法是更優雅的函數:
目的-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;
}
如果你也想改變選擇欄的顏色,我發現我必須添加2個單獨的UIViews
到包含012的視圖,間隔開的35點爲180
夫特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])
}
記住當使用方法:你不不需要執行titleForRowInComponent()
,因爲在使用attributedTitleForRow()
時從不會調用它。
令人驚歎!這是最好的,應該是選定的正確答案。謝謝。 – user1949873
迄今爲止,這是最好的答案,因爲它也適用於具有多個組件的選取器視圖。 – PKCLsoft
不錯的工作。我爲使用數組的人添加了一個編輯到你的答案的編輯。如果這個問題讓我知道。 – Rick
原始訊息[這裏](can I change the font color of the datePicker in iOS7?)
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 44)];
label.backgroundColor = [UIColor grayColor];
label.textColor = [UIColor whiteColor];
label.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:18];
label.text = [NSString stringWithFormat:@" %d", row+1];
return label;
}
// number Of Components
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
// number Of Rows In Component
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component
{
return 6;
}
該解決方案適用於包含單個組件的pickerview。如果您有超過1個,標籤將與我所能看到的重疊。 – PKCLsoft
我遇到了同樣的問題,pickerView使用兩個組件。我的解決方案與上述類似,只需進行一些修改。因爲我使用兩個組件,所以需要從兩個不同的數組中抽取數據。
- (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;
}
,重寫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;
}
- (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;
}
夫特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])
}
}
這將工作:[?我能更改日期選擇在iOS7的字體顏色]
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0,
pickerView.frame.size.width, 44)];
label.backgroundColor = [UIColor grayColor];
label.textColor = [UIColor whiteColor];
label.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:18];
label.text = [NSString stringWithFormat:@" %d", row+1];
return label;
}
// total Components
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
// total rows In Component
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:
(NSInteger)component
{
return 6;
}
看起來像這是一個答案的複製/粘貼。它有什麼不同? – Sunil
- 1. 如何在iOS中將UIPickerView文本顏色更改爲白色
- 2. 如何在iOS 7中更改UIPickerView中的文本字體?
- 3. 從白色更改狀態欄文本顏色iOS 7/Xcode 5
- 4. 更改UIPickerView主體顏色
- 5. 如何在iOS 7的UINavigationBar中更改我的文本的顏色?
- 6. 在iOS 7中,如何更改UIActionSheet中選項的顏色?
- 7. 在iOS 7中更改鍵盤上方的自定義UIToolbar的顏色(不僅僅是更改文本顏色)
- 8. 如何更改iOS 7中UIActionSheet的顏色?
- 9. 如何更改UIActivityViewController中的文本顏色和圖標顏色
- 10. 變化的iOS 7 morenavigationcontroller文本顏色
- 11. 如何更改QxtLabel的文本顏色
- 12. 如何更改文本顏色的IFrame
- 13. 如何更改javascript文本的顏色?
- 14. 如何更改JButton的文本顏色
- 15. 更改iOS 6與iOS 7中的UIImage顏色不同
- 16. Xamarin MvvmCross iOS Bool顏色ValueConverter不更改標籤文本顏色
- 17. 如何更改UIPickerView行中各個字符的字體顏色?
- 18. 如何更改iOS 5上表格標題的文本顏色?
- 19. 如何更改IOS的文本鏈接顏色
- 20. UIPickerView行顏色
- 21. 狀態欄文本顏色iOS 7
- 22. 如何更改文本顏色代碼?
- 23. PhpStorm:我如何更改文本顏色
- 24. 如何更改disqus文本顏色
- 25. 如何更改CCLabelBMFont文本顏色
- 26. 如何更改tinymce textarea文本顏色
- 27. 如何更改JProgressBar文本顏色
- 28. 如何更改文本顏色在AlertDialog
- 29. 如何更改ActionBar Spinner文本顏色?
- 30. 如何更改微調文本顏色
的可能重複(http://stackoverflow.com/questions/18807940/can-i -change-the-font-color-of-date-date-picker -in-ios7) –
@AaronBrager。在這個問題之後,不要重複你提供的鏈接。 –