আমি আইওএস 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.