কোনও ইউআইটিএবলভিউসেলের নীল হাইলাইট রঙটি কীভাবে পরিবর্তন করবেন?


131

আমি ভাবছি কীভাবে কোনও নীল হাইলাইট / নির্বাচনের রঙ পরিবর্তন করবেন UITableViewCell?

উত্তর:


213

আপনি হাইলাইট রঙটি বিভিন্ন উপায়ে পরিবর্তন করতে পারেন।

  1. আপনার ঘরের নির্বাচন স্টাইল সম্পত্তি পরিবর্তন করুন। আপনি যদি এটিতে পরিবর্তন করেন তবে এটি UITableViewCellSelectionStyleGrayধূসর হবে।

  2. selectedBackgroundViewসম্পত্তি পরিবর্তন করুন । আসলে যা নীল গ্রেডিয়েন্ট তৈরি করে তা হ'ল ভিউ। আপনি একটি ভিউ তৈরি করতে এবং আপনার পছন্দসই চিত্রটি আঁকতে পারেন, এবং দৃশ্যটি আপনার টেবিল দেখার ঘরগুলির পটভূমি হিসাবে ব্যবহার করতে পারেন।


8
শীতল, এখানে একটি ভাল ব্যাখ্যা এবং উদাহরণ পাওয়া গেছে: cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html
টমাস

1
আমি বুঝতে পেরেছি যে আইবিতে আপনি ইউআইটিএবল ভিউসেল "নির্বাচন" কে "কিছুই নয়" তে সেট করতে পারবেন না - কারণ selectedBackgroundViewএটি কেবল কখনও প্রদর্শিত হবে না never ডিফল্ট "নির্বাচন" সেট করার পরেই selectedBackgroundViewশো প্রদর্শিত হবে up আইওএস 6 এবং 7 এ পরীক্ষিত হয়েছে
জনি

12
মহান নোট জন্য ধন্যবাদ! এটি এখন এটিকে এত সহজ করে তোলে: আপনি একটি নতুন দৃষ্টিভঙ্গি তৈরি করেন (এমনকি ফ্রেমটি নির্দিষ্ট করার প্রয়োজন নেই: cell.selectedBackgroundView = [UIView new];এবং আপনি যে রঙ চয়ন করতে চান সেটি সেট করুন:cell.selectedBackgroundView.backgroundColor = [UIColor colorWithHex:@"ecf2f5" andAlpha:1];
ড্যানি পি

এই পৃষ্ঠার নীচে তাকান, আরও সাম্প্রতিক পন্থা রয়েছে
চূড়ান্ত করুন lim

145

জোনবল ইতিমধ্যে একটি দুর্দান্ত উত্তর সরবরাহ করেছে। আমি ভেবেছিলাম UIViewটেবিলভিউ সেলটিতে একটি সংযুক্ত করার জন্য একটি সংক্ষিপ্ত কোড স্নিপেট যুক্ত করা দরকারী যা নির্বাচিত ব্যাকগ্রাউন্ড ভিউ হিসাবে উপস্থাপিত হবে।

cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

    UIView *selectionColor = [[UIView alloc] init];
    selectionColor.backgroundColor = [UIColor colorWithRed:(245/255.0) green:(245/255.0) blue:(245/255.0) alpha:1];
    cell.selectedBackgroundView = selectionColor;
  • সেল আমার UITableViewCell
  • আমি একটি ইউআইভিউ তৈরি করেছি এবং আরজিবি রং (হালকা ধূসর) ব্যবহার করে এর পটভূমি রঙ সেট করেছি
  • আমি তখন সেল স্থাপন selectedBackgroundViewকরা UIViewআমার মনোনীত পটভূমির রঙ সঙ্গে যে আমি তৈরি

এটি আমার পক্ষে ভাল কাজ করেছে। টিপ জোনবলের জন্য ধন্যবাদ


2
বিভাগগুলির সাথে সারণী দর্শনগুলি ব্যবহার করার সময় এটি খুব ভাল কাজ করে না। নির্বাচিত হলে, ঘরটি সীমানা হারাবে এবং প্রথম বা শেষ কক্ষটি বৃত্তাকার হয় না।
কর্ক ওয়াল

7
@ কির্ক, আপনার অর্থ গ্রুপ হয়েছে :)
টাইম

@ টিম, না, আমি বিভাগগুলি বোঝাতে চাইছি : "একটি টেবিল ভিউ শূন্য বা আরও বেশি বিভাগ নিয়ে তৈরি করা হয়েছে, যার প্রতিটি নিজস্ব সারি রয়েছে।"
কির্ক ওল

আপনাকে এটি 'সেলফোরআরোএটিআইডেক্সপ্যাথ' এর মধ্যে রাখতে হবে। এক বিভাগ সহ আমার পক্ষে কাজ করে। একাধিক বিভাগ দিয়ে এটি চেষ্টা করে না।
ভিনসেন্ট

গেমটি থেকে একটু দেরি হলেও আমি এটি নিশ্চিত করতে পারি যে এটি একাধিক বিভাগ (অ-গোষ্ঠীযুক্ত) সহ একটি টেবিলভিউতে কাজ করে
matto0

30

UITableViewCell তিনটি ডিফল্ট নির্বাচনের শৈলী রয়েছে: -

  1. নীল
  2. ধূসর
  3. না

বাস্তবায়ন নিম্নরূপ:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {

     [cell setSelectionStyle:UITableViewCellSelectionStyleNone];       
}

7
এই তিনটি ডিফল্ট শৈলীর চেয়ে আমরা আমাদের প্রত্যাশিত শৈলীর জন্য বাছাইব্যাকগ্রাউন্ডভিউ সম্পত্তি দ্বারা কাস্টমাইজ করতে পারি।
সুনীল টার্গে

আমার জন্য কাজ ... ধন্যবাদ একটি টন।
মুজিব ফারুকী

19

সুইফটে, এটিকে ব্যবহার করুন cellForRowAtIndexPath

let selectedView = UIView()
selectedView.backgroundColor = .white
cell.selectedBackgroundView = selectedView

আপনি যদি চান যে আপনার নির্বাচনের রঙ প্রতিটি ক্ষেত্রে একই হয় তবে এটি UITableViewCellব্যবহার করুন AppDelegate

let selectedView = UIView()
selectedView.backgroundColor = .white
UITableViewCell.appearance().selectedBackgroundView = selectedView

18

আপনি যদি অ্যাপ্লিকেশনটিকে প্রশস্ত করতে চান তবে আপনি আপনার অ্যাপ ডেলিগেটে যুক্তি যুক্ত করতে পারেন

class AppDelegate: UIResponder, UIApplicationDelegate {

    //... truncated

   func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {

        // set up your background color view
        let colorView = UIView()
        colorView.backgroundColor = UIColor.yellowColor()

        // use UITableViewCell.appearance() to configure 
        // the default appearance of all UITableViewCells in your app
        UITableViewCell.appearance().selectedBackgroundView = colorView

        return true
    }

    //... truncated
}

পারফেক্ট। বিশ্বব্যাপী সেই ডিফল্ট ঘরের পাঠ্যের রঙটি কীভাবে সেট করবেন তা সম্পর্কে কোনও ধারণা?
কলাআসিড

1
এটি কাজ করে, তবে নতুন ভিউ নিয়ন্ত্রণকারীকে চাপ দেওয়ার পরে নির্বাচনটি সরাসরি সাফ হয়ে যায়।
ববমফ 9

ইউআইটিএবল ভিউসেলকে বিশ্বব্যাপী পরিবর্তন করার দুর্দান্ত উপায়
শশী 3456643

12

সম্পূর্ণতার জন্য: আপনি যদি নিজের নিজস্ব সাবক্লাস তৈরি করে থাকেন UITableViewCellতবে - (void)setSelected:(BOOL)selected animated:(BOOL)animatedপদ্ধতিটি বাস্তবায়ন করতে পারবেন এবং সামগ্রী ভিউতে আপনি যুক্ত হওয়া কিছু দৃশ্যের পটভূমি রঙ সেট করতে পারেন । (যদি এটি হয় তবে) বা সামগ্রী ভিউ নিজেই (এটি যদি আপনার নিজের মতামত দ্বারা আবৃত না হয়)।

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    if(selected) {
        self.contentView.backgroundColor = UIColor.blueColor;
    } else {
        self.contentView.backgroundColor = UIColor.whiteColor;
    }
}

(সোর্স কোড ডিআইভির ছোট প্রস্থের সাথে মাপসই করতে ব্যবহার করেন নি :)

এই পদ্ধতির সিলেক্টডব্যাকগ্রাউন্ডভিউ ব্যবহার করার ক্ষেত্রে দুটি সুবিধা রয়েছে, এটি কম মেমরি ব্যবহার করে এবং কিছুটা কম সিপিইউ ব্যবহার করে, আপনি শত শত কোষ প্রদর্শন না করা পর্যন্ত আপনি খেয়ালও করবেন না।


selectedBackgroundView পদ্ধতির একেবারে শুরুতে একটি নতুন ভিউ নিয়োগের পরে এটি কাজ করবেself. selectedBackgroundView = [UIView new];
এনডুন

@ এনাডুন এই পদ্ধতিগুলি আইওএস 12 এ আমার জন্য কাজ করে, selectedBackgroundViewসম্পত্তির কোনও বিন্যাস ছাড়াই ।
Nate

11

UITableViewCellSelectionStyleDefaultকাস্টম ব্যাকগ্রাউন্ড রঙের কাজ করার জন্য আমাকে নির্বাচনের স্টাইলটি সেট করতে হবে । অন্য কোনও শৈলীতে, কাস্টম ব্যাকগ্রাউন্ডের রঙ উপেক্ষা করা হবে। আইওএস 8-এ পরীক্ষিত।

নীচে সেলটির সম্পূর্ণ কোড:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"MyCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // This is how you change the background color
    cell.selectionStyle = UITableViewCellSelectionStyleDefault;
    UIView *bgColorView = [[UIView alloc] init];
    bgColorView.backgroundColor = [UIColor redColor];
    [cell setSelectedBackgroundView:bgColorView];

    return cell;
}

6

@ ব্যবহারকারীর উত্তরের ভিত্তিতে , আপনি কেবলমাত্র নিজের অ্যাপ্লিকেশন কোডের যে কোনও জায়গায় এই এক্সটেনশনটি যুক্ত করতে পারেন এবং আপনার অ্যাপ্লিকেশনটির প্রতিটি কক্ষের জন্য সরাসরি স্টোরিবোর্ড সম্পাদকে আপনার নির্বাচনের রঙ রাখতে পারেন:

@IBDesignable extension UITableViewCell {
    @IBInspectable var selectedColor: UIColor? {
        set {
            if let color = newValue {
                selectedBackgroundView = UIView()
                selectedBackgroundView!.backgroundColor = color
            } else {
                selectedBackgroundView = nil
            }
        }
        get {
            return selectedBackgroundView?.backgroundColor
        }
    }
}

স্টোরিবোর্ডে ইউআইটিএবলভিউসেল নির্বাচনের রঙ


5
@IBDesignable class UIDesignableTableViewCell: UITableViewCell {
  @IBInspectable var selectedColor: UIColor = UIColor.clearColor() {
    didSet {
      selectedBackgroundView = UIView()
      selectedBackgroundView?.backgroundColor = selectedColor
    }
  }
}

আপনার স্টোরিবোর্ডে, অ্যাট্রিবিউটস ইন্সপেক্টরটিতে আপনার ইউআইটিএবল ভিউসিলের ক্লাসটি ইউআইডি ডিজাইনযোগ্য টেবিলভিউসেলকে সেট করুন, আপনি আপনার ঘরের নির্বাচিত রঙটি যে কোনও রঙে পরিবর্তন করতে পারবেন।

আপনি এটি আপনার সমস্ত কক্ষের জন্য ব্যবহার করতে পারেন। আপনার অ্যাট্রিবিউটস ইন্সপেক্টরটি এরকম দেখতে পাবেন।

আপনার অ্যাট্রিবিউটস ইন্সপেক্টরটি এরকম দেখতে পাবেন


খুবই সৃজনশীল! মহান!
কৌশিল রুপারেলিয়া

আপনি এটিকে আরও সহজ করতে পারেন, আমার উত্তরটি দেখুন;) স্ট্যাকওভারফ্লো
a/

আমি লেবেল সেট করতে একটি কাস্টম সেল ব্যবহার করি, সুতরাং এটি ভালভাবে কাজ করে, ধন্যবাদ! সুইফট 5 এর জন্য পরিবর্তন: এটি এখন UIColor.clear, না UIColor.clearColor()। নিশ্চিত যে এটি যদি সুইফটেও পরিবর্তন হয় তবে এটি ছাড়াও এটি কাজ করে @IBDesignable
নেফ

5

সুইফট 3.0 / 4.0

আপনি যদি নিজের নিজস্ব কাস্টম সেল তৈরি করে থাকেন তবে আপনি সমস্ত কক্ষের জন্য নির্বাচনের রঙটি পরিবর্তন করতে পারেন awakeFromNib():

 override func awakeFromNib() {
    super.awakeFromNib()

    let colorView = UIView()
    colorView.backgroundColor = UIColor.orange.withAlphaComponent(0.4)

    self.selectedBackgroundView = colorView


}

0

1- আপনার ঘরের কনটেন্ট ভিউতে একটি ভিউ যুক্ত করুন।
2- আপনার ঘরে ডান ক্লিক করুন।
3- যোগ করা ভিউটিকে "নির্বাচিতব্যাকগ্রাউন্ডভিউ" হিসাবে তৈরি করুন এখানে চিত্র বর্ণনা লিখুন

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