আমি আইওএস 7 এর অধীনে কোনও ইউআইপিকারভিউতে পাঠ্যের রঙ কীভাবে পরিবর্তন করব?


117

আমি pickerView:viewForRow:forComponent:reusingViewপদ্ধতিটি সম্পর্কে সচেতন , কিন্তু viewএটি ব্যবহার করার সময় reusingView:আমি কীভাবে এটি অন্য পাঠ্যের রঙ ব্যবহার করতে পরিবর্তন করব? যদি আমি ব্যবহার করিview.backgroundColor = [UIColor whiteColor]; না করে আর দেখা যাবে না।



2
@AaronBrager। ক্যু আপনার সরবরাহিত লিঙ্কটি এই কানের পরে জিজ্ঞাসা করা হয়নি।
গজেন্দ্র কে চৌহান

উত্তর:


323

প্রতিনিধি পদ্ধতিতে একটি ফাংশন রয়েছে যা আরও মার্জিত:

উদ্দেশ্য গ:

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

আপনি যদি বাছাই বারের রংগুলিও পরিবর্তন করতে চান তবে আমি দেখতে পেলাম যে 180 টির বাছাইকারী উচ্চতার জন্য, 35 ডিগ্রিবিশিষ্ট বিস্তৃত ভিউটিতে আমাকে 2 টি আলাদা যুক্ত UIViewsকরতে হয়েছিল UIPickerView

সুইফট 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()


এখন পর্যন্ত এটি সেরা উত্তর কারণ এটি একাধিক উপাদান সহ চয়নকারী দর্শকদের জন্যও কাজ করে।
পিকেসিএলসফট

29

এখানে মূল পোস্ট: আমি 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;
}

এই দ্রবণটি একটি একক উপাদানযুক্ত পিকরভিউয়ের জন্য দুর্দান্ত কাজ করে। আপনার যদি 1 এর বেশি থাকে তবে আমি যা দেখতে পাচ্ছি তার থেকে লেবেলগুলি ওভারল্যাপ হবে।
পিকেসিএলসফট

23
  1. স্টোরিবোর্ডে যান
  2. পিকারভিউ নির্বাচন করুন
  3. পরিচয় পরিদর্শক (3 য় ট্যাব) এ যান
  4. ব্যবহারকারীর সংজ্ঞায়িত রানটাইম অ্যাট্রিবিউট যুক্ত করুন
  5. কীপথ = পাঠ্য রঙ
  6. প্রকার = রঙ
  7. মান = [আপনার পছন্দের রঙ]

স্ক্রিনশট


দয়া করে আপনার উত্তরটি ব্যাখ্যা করুন
Gwenc37

11
এটি অর্ধেকের কাজ, খাস পাঠ্য কালো তবে আপনি এটি বাছাইকারীকে স্ক্রোল করলে তিনি সাদা হয়ে যান
শিয়াল

4
আপনি যদি স্ক্রোল করেন তবেই কাজ করে
ক্রিস ভ্যান বুসকির্ক

হাই @ ক্রিস-ভ্যান-বাসকির্ক আমার অ্যাড-অন পরীক্ষা করুন [_প্রেটিটিপিকার নির্বাচন করুন রো: সুন্দর ইনডেক্স ইনকোম্পোন্ট: 0 অ্যানিমেটেড: হ্যাঁ];
WINSergey

7

জামারিনে, ইউআইপিকারার মডেলভিউ পদ্ধতিটি getAttributesTitle ওভাররাইড করুন

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


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

2

সুইফট 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])
    }
}

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;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.