ios - আইফোন UITextField-স্থানধারক টেক্সট রঙ পরিবর্তন করুন




(20)

আইওএস 6.0+ এর জন্য

[textfield setValue:your_color forKeyPath:@"_placeholderLabel.textColor"];

আশা করি এটা সাহায্য করবে.

দ্রষ্টব্য: ব্যক্তিগত অ্যাপটি অ্যাক্সেস করার সময় অ্যাপল আপনার অ্যাপ্লিকেশনটিকে প্রত্যাখ্যান করতে পারে (0.01% সম্ভাবনা)। আমি দুই বছর থেকে আমার সব প্রকল্পে এটি ব্যবহার করছি, কিন্তু অ্যাপল এই জন্য জিজ্ঞাসা করেনি।

আমি কালো তৈরি করতে আমার UITextField নিয়ন্ত্রণগুলিতে সেট করা স্থানধারক পাঠ্যের রঙটি পরিবর্তন করতে চাই।

স্থানধারক হিসাবে স্বাভাবিক পাঠ্য ব্যবহার না করে এবং স্থানধারক আচরণের অনুকরণ করার জন্য সমস্ত পদ্ধতির উপর ওভাররাইড করতে চাইলে আমি এটি পছন্দ করতে চাই।

আমি বিশ্বাস করি যদি আমি এই পদ্ধতিটি মুছে ফেলি:

- (void)drawPlaceholderInRect:(CGRect)rect

তারপর আমি এটা করতে সক্ষম হওয়া উচিত। কিন্তু আমি এই পদ্ধতির মধ্যে থেকে প্রকৃত স্থানধারক বস্তু অ্যাক্সেস করতে কিভাবে নিশ্চিত নই।


সুইফট 3.0 + স্টোরিবোর্ড

স্টোরিবোর্ডে স্থানধারক রঙ পরিবর্তন করতে, পরবর্তী কোডের সাথে একটি এক্সটেনশান তৈরি করুন। (যদি আপনি মনে করেন, এই কোডটি আপডেট করতে বিনা দ্বিধায়, এটি আরও পরিষ্কার এবং নিরাপদ হতে পারে)।

extension UITextField {
    @IBInspectable var placeholderColor: UIColor {
        get {
            guard let currentAttributedPlaceholderColor = attributedPlaceholder?.attribute(NSForegroundColorAttributeName, at: 0, effectiveRange: nil) as? UIColor else { return UIColor.clear }
            return currentAttributedPlaceholderColor
        }
        set {
            guard let currentAttributedString = attributedPlaceholder else { return }
            let attributes = [NSForegroundColorAttributeName : newValue]

            attributedPlaceholder = NSAttributedString(string: currentAttributedString.string, attributes: attributes)
        }
    }
}

সুইফ্ট 4 সংস্করণ

extension UITextField {
    @IBInspectable var placeholderColor: UIColor {
        get {
            return attributedPlaceholder?.attribute(.foregroundColor, at: 0, effectiveRange: nil) as? UIColor ?? .clear
        }
        set {
            guard let attributedPlaceholder = attributedPlaceholder else { return }
            let attributes: [NSAttributedStringKey: UIColor] = [.foregroundColor: newValue]
            self.attributedPlaceholder = NSAttributedString(string: attributedPlaceholder.string, attributes: attributes)
        }
    }
}

IOS7 এ স্থানধারক উভয় উল্লম্ব এবং অনুভূমিক সারিবদ্ধতা পাশাপাশি রঙ হ্যান্ডেল। drawInRect এবং drawAtPoint আর বর্তমান প্রসঙ্গ fillColor ব্যবহার করে না।

https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html

OBJ-সি

@interface CustomPlaceHolderTextColorTextField : UITextField

@end


@implementation CustomPlaceHolderTextColorTextField : UITextField


-(void) drawPlaceholderInRect:(CGRect)rect  {
    if (self.placeholder) {
        // color of placeholder text
        UIColor *placeHolderTextColor = [UIColor redColor];

        CGSize drawSize = [self.placeholder sizeWithAttributes:[NSDictionary dictionaryWithObject:self.font forKey:NSFontAttributeName]];
        CGRect drawRect = rect;

        // verticially align text
        drawRect.origin.y = (rect.size.height - drawSize.height) * 0.5;

        // set alignment
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        paragraphStyle.alignment = self.textAlignment;

        // dictionary of attributes, font, paragraphstyle, and color
        NSDictionary *drawAttributes = @{NSFontAttributeName: self.font,
                                     NSParagraphStyleAttributeName : paragraphStyle,
                                     NSForegroundColorAttributeName : placeHolderTextColor};


        // draw
        [self.placeholder drawInRect:drawRect withAttributes:drawAttributes];
    }
}

@end

IOS7 এবং কম উভয় জন্য ভাল করতে পারেন:

- (CGRect)placeholderRectForBounds:(CGRect)bounds {
  return [self textRectForBounds:bounds];
}

- (CGRect)editingRectForBounds:(CGRect)bounds {
  return [self textRectForBounds:bounds];
}

- (CGRect)textRectForBounds:(CGRect)bounds {
  CGRect rect = CGRectInset(bounds, 0, 6); //TODO: can be improved by comparing font size versus bounds.size.height
  return rect;
}

- (void)drawPlaceholderInRect:(CGRect)rect {
  UIColor *color =RGBColor(65, 65, 65);
  if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    [self.placeholder drawInRect:rect withAttributes:@{NSFontAttributeName:self.font, UITextAttributeTextColor:color}];
  } else {
    [color setFill];
    [self.placeholder drawInRect:rect withFont:self.font];
  }
}

Xamarin.iOS ডেভেলপারদের জন্য, আমি এই দস্তাবেজ থেকে এটি খুঁজে পেয়েছি https://developer.xamarin.com/api/type/Foundation.NSAttributedString/

textField.AttributedPlaceholder = new NSAttributedString ("Hello, world",new UIStringAttributes () { ForegroundColor =  UIColor.Red });

আইওএস 6 এবং পরবর্তীতে UITextField attributedPlaceholder UITextField । আইওএস 3.2 এবং setAttributes:range: অফারগুলি setAttributes:range: NSMutableAttributedString

আপনি নিম্নলিখিত কাজ করতে পারেন:

NSMutableAttributedString *ms = [[NSMutableAttributedString alloc] initWithString:self.yourInput.placeholder];
UIFont *placeholderFont = self.yourInput.font;
NSRange fullRange = NSMakeRange(0, ms.length);
NSDictionary *newProps = @{NSForegroundColorAttributeName:[UIColor yourColor], NSFontAttributeName:placeholderFont};
[ms setAttributes:newProps range:fullRange];
self.yourInput.attributedPlaceholder = ms;

আপনি নীচের কোডটি ব্যবহার করে যে কোনও রঙে স্থানধারক টেক্সট রঙ পরিবর্তন করতে পারেন।

UIColor *color = [UIColor lightTextColor];
YOURTEXTFIELD.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"PlaceHolder Text" attributes:@{NSForegroundColorAttributeName: color}];

আমি ইতিমধ্যে এই সমস্যা সম্মুখীন ছিল। আমার ক্ষেত্রে নীচের কোড সঠিক।

উদ্দেশ্য গ

[textField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];

সুইফ্ট 4. এক্স জন্য

tf_mobile.setValue(UIColor.white, forKeyPath: "_placeholderLabel.textColor")

আশা করি, এই আপনাকে সাহায্য করতে পারে।


আমি স্থানধারক সারিবদ্ধ রাখা প্রয়োজন যাতে অ্যাডাম এর উত্তর আমার জন্য যথেষ্ট ছিল না।

এটি সমাধান করার জন্য আমি একটি ছোট পার্থক্য ব্যবহার করেছি যা আমি আশা করি আপনিও কিছুকে সাহায্য করবেন:

- (void) drawPlaceholderInRect:(CGRect)rect {
    //search field placeholder color
    UIColor* color = [UIColor whiteColor];

    [color setFill];
    [self.placeholder drawInRect:rect withFont:self.font lineBreakMode:UILineBreakModeTailTruncation alignment:self.textAlignment];
}

এছাড়াও আপনার স্টোরিবোর্ডে, কোড একক লাইন ছাড়া


এর সাথে আমরা iOS এর টেক্সটফিল্ডের স্থানধারক পাঠ্যের রঙ পরিবর্তন করতে পারি

[self.userNameTxt setValue:[UIColor colorWithRed:41.0/255.0 green:91.0/255.0 blue:106.0/255.0 alpha:1.0] forKeyPath:@"_placeholderLabel.textColor"];

কেন আপনি UIAppearance পদ্ধতি ব্যবহার করবেন না:

[[UILabel appearanceWhenContainedIn:[UITextField class], nil] setTextColor:[UIColor whateverColorYouNeed]];

শুধুমাত্র iOS6 + এর সাথে নিম্নলিখিত (আলেকজান্ডার ডাব্লু এর মন্তব্য অনুসারে):

UIColor *color = [UIColor grayColor];
nameText.attributedPlaceholder =
   [[NSAttributedString alloc]
       initWithString:@"Full Name"
       attributes:@{NSForegroundColorAttributeName:color}];

সহজ এবং ব্যথা মুক্ত, কিছু জন্য একটি সহজ বিকল্প হতে পারে।

_placeholderLabel.textColor

উৎপাদন জন্য প্রস্তাবিত না, অ্যাপল আপনার জমা প্রত্যাখ্যান করতে পারে।


সুইফট 4.1 এর জন্য এই সমাধান

    textName.attributedPlaceholder = NSAttributedString(string: textName.placeholder!, attributes: [NSAttributedStringKey.foregroundColor : UIColor.red])

সুইফ্ট ইন:

if let placeholder = yourTextField.placeholder {
    yourTextField.attributedPlaceholder = NSAttributedString(string:placeholder, 
        attributes: [NSForegroundColorAttributeName: UIColor.blackColor()])
}

সুইফ্ট 4.0:

if let placeholder = yourTextField.placeholder {
    yourTextField.attributedPlaceholder = NSAttributedString(string:placeholder, 
        attributes: [NSAttributedStringKey.foregroundColor: UIColor.black])
}

সেট জন্য একাধিক রঙ সঙ্গে অঙ্কিত টেক্সটফিল্ড স্থানধারক,

শুধু টেক্সট উল্লেখ করুন,

  //txtServiceText is your Textfield
 _txtServiceText.placeholder[email protected]"Badal/ Shah";
    NSMutableAttributedString *mutable = [[NSMutableAttributedString alloc] initWithString:_txtServiceText.placeholder];
     [mutable addAttribute: NSForegroundColorAttributeName value:[UIColor whiteColor] range:[_txtServiceText.placeholder rangeOfString:@"Badal/"]]; //Replace it with your first color Text
    [mutable addAttribute: NSForegroundColorAttributeName value:[UIColor orangeColor] range:[_txtServiceText.placeholder rangeOfString:@"Shah"]]; // Replace it with your secondcolor string.
    _txtServiceText.attributedPlaceholder=mutable;

আউটপুট: -


হয়তো আপনি এই ভাবে চেষ্টা করতে চান, তবে অ্যাপল আপনাকে ব্যক্তিগত আইভরের অ্যাক্সেস সম্পর্কে সতর্ক করে দিতে পারে:

[self.myTextField setValue:[UIColor darkGrayColor] 
                forKeyPath:@"_placeholderLabel.textColor"];

বিঃদ্রঃ
মার্টিন অ্যালিয়াসের মতে, এটি এখন iOS 7 এ কাজ করছে না।


দ্রুত 3.X

passwordTxtField.attributedPlaceholder = NSAttributedString(string: "placeholder text", attributes:[NSForegroundColorAttributeName: UIColor.black])

সুইফ্ট 3

import UIKit

let TEXTFIELD_BLUE  = UIColor.blue
let TEXTFIELD_GRAY  = UIColor.gray

class DBTextField: UITextField {
    /// Tetxfield Placeholder Color
    @IBInspectable var palceHolderColor: UIColor = TEXTFIELD_GRAY
    func setupTextField () {
        self.attributedPlaceholder = NSAttributedString(string:self.placeholder != nil ? self.placeholder! : "",
                                                            attributes:[NSForegroundColorAttributeName: palceHolderColor])
    }
}

class DBLocalizedTextField : UITextField {
    override func awakeFromNib() {
        super.awakeFromNib()
        self.placeholder = self.placeholder
    }
}




uitextfield