ইউআইটিেক্সটফিল্ড সীমানার রঙ


133

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

আমি এইভাবে পটভূমির রঙ সেট করতে পটভূমি সম্পত্তি ব্যবহার করেছি:

self.textField.backgroundColor = textFieldColor;

তবে আমাকে ইউআইটিেক্সটফিল্ড সীমানার রঙও পরিবর্তন করতে হবে। এবং আমার প্রশ্ন ছিল কীভাবে সীমান্তের রঙ পরিবর্তন করা যায়।


সহায়ক উত্তর প্রচুর কিন্তু শুধুমাত্র একটি ( stackoverflow.com/a/5387607/826946 textField.borderStyle = UITextField.BorderStyle.none:) আমি কী পাওয়া উল্লেখ করেছে। তা ছাড়া আমি অন্তর্নির্মিত সীমান্তের চিহ্নগুলি পাই। আপাতদৃষ্টিতে একবার আপনি অন্তর্নির্মিত সীমানাটি ব্যবহার না করে নিজের নিজস্ব সংজ্ঞা দেওয়া শুরু করার পরে, আপনাকে বলার দরকার আছে যে আপনি এটি বর্ডার স্টাইল = কোনওটিই ব্যবহার করতে চান না এবং তারপরে সমস্ত পরামিতি (রঙ, কোণার রেডিয়াস এবং বর্ডারউইথ) নির্ধারণ করুন
অ্যান্ডি ওয়েইনস্টাইন

উত্তর:


274

QuartzCoreআপনার শ্রেণিতে কাঠামো আমদানি করুন :

#import <QuartzCore/QuartzCore.h>

এবং সীমানার রঙ পরিবর্তনের জন্য নিম্নলিখিত কোড স্নিপেট ব্যবহার করুন (আমি এটি রেড কালারে সেট করছি),

    textField.layer.cornerRadius=8.0f;
    textField.layer.masksToBounds=YES;
    textField.layer.borderColor=[[UIColor redColor]CGColor];
    textField.layer.borderWidth= 1.0f;

মূল লেআউটে ফিরে যাওয়ার জন্য কেবল রঙ পরিষ্কার করতে সীমানার রঙ সেট করুন,

    serverField.layer.borderColor=[[UIColor clearColor]CGColor];

দ্রুত কোডে

    textField.layer.borderWidth = 1
    textField.layer.borderColor = UIColor.whiteColor().CGColor

3
এটি কোয়ার্টকোরের পরিবর্তে # আইফোন <কোয়ার্টজকোর / কোয়ার্টজকোর.ই. (আপনি জেডটি ভুলে গেছেন)
সিএলডিআর

54
আইওএস 7-এ আপনাকে অবশ্যই একটি সীমানা প্রস্থ নির্ধারণ করতে হবে বা রঙটি কার্যকর হবে না।
মিকাহ

1
একজন শিক্ষানবিস হিসাবে এটি আমার কাছে কোনও ধারণা রাখে না। যদি আমি একটি ফাঁকা, খালি অ্যাপ্লিকেশন শুরু করি তবে স্টোরিবোর্ডে যান এবং একটি টেক্সটভিউ ক্ষেত্র যুক্ত করুন। আমি কোয়ার্টজোর কোথায় আমদানি করব? আমি উপরে বর্ডারউইথের তথ্যটি কোথায় যুক্ত করব? "টেক্সটফিল্ড" কী এবং এটি কীভাবে জানতে পারে যে আমি কোন পাঠ্য ক্ষেত্রের কথা বলছি?
নাথান ম্যাককাস্কলে

1
@ সেফথাস যদি আপনি এখনও এটি সন্ধান না করে থাকেন তবে এটিই আপনাকে করতে হবে: আপনি স্টোরিবোর্ডে যে পাঠ্যক্ষেত্র তৈরি করেছেন তা "হুক আপ" করতে হবে এবং এই বৈশিষ্ট্যগুলিকে প্রোগ্রামিকভাবে পরিবর্তন করতে হবে । স্টোরিবোর্ডটি একবার মুছে ফেলার পরে আপনি আপনার কোডে প্রবেশ করুন (উদাহরণস্বরূপ viewDidLoad) এবং এই বৈশিষ্ট্যগুলি self.myTextField.layer.cornerRadiusইত্যাদি বলে পরিবর্তন করে আপনার অ্যাপ্লিকেশন চালু করার সাথে সাথে এই পরিবর্তনগুলি কার্যকর হবে, তবে আপনি স্টোরিবোর্ডে পরিবর্তনগুলি দেখতে পাবেন না। যদি এটি আপনার কাছে কোনও অর্থবোধ না করে, তবে আমি আপনাকে কোনও ওয়েবসাইটে যাওয়ার পরামর্শ দিই, উদাহরণস্বরূপ রে ওেন্ডারলিচ, এবং কিছু শিক্ষানবিস টটস পড়ুন।
আলেকসান্দার

@ নাথানমিস্কাস্কলে "আমি কোয়ার্টজকোরটি কোথায় আমদানি করব?" আপনি এটিকে আপনার ভিউকন্ট্রোল.আর ফাইলটির শীর্ষে যুক্ত করুন। "" টেক্সটফিল্ড "কী এবং এটি কীভাবে জানতে পারে যে আমি কোন পাঠ্য ক্ষেত্রের কথা বলছি?" আপনি একটি 'স্থানীয়' টেক্সটফিল্ড আইবিউটলেট ভেরি তৈরি করতে পারেন এবং এটি কেবলমাত্র স্টোরবোর্ডে রেখেছেন টেক্সটফিল্ড (টেক্সটভিউ নয়) এর সাথে সংযুক্ত করতে পারেন। আরও তথ্যের জন্য, এখানে চেক করুন: hubpages.com/technology/… "আমি উপরে বর্ডারউইথের তথ্যটি কোথায় যুক্ত করব?" যে কোনও জায়গায়, তবে পছন্দমতো ভিডডিডোড ফাংশনে।
চেন লি ইওং

21

এটা চেষ্টা কর:

UITextField *theTextFiels=[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 150, 30)];
    theTextFiels.borderStyle=UITextBorderStyleNone;
    theTextFiels.layer.cornerRadius=8.0f;
    theTextFiels.layer.masksToBounds=YES;
        theTextFiels.backgroundColor=[UIColor redColor];
    theTextFiels.layer.borderColor=[[UIColor blackColor]CGColor];
    theTextFiels.layer.borderWidth= 1.0f;

    [self.view addSubview:theTextFiels];
    [theTextFiels release];

এবং আমদানি কোয়ার্টজোর:

#import <QuartzCore/QuartzCore.h>

17

নিম্নলিখিত ক্লাসটি আমদানি করুন:

#import <QuartzCore/QuartzCore.h> 

// পাঠ্য ক্ষেত্রের সীমানার জন্য ধূসর বর্ণ নির্ধারণের জন্য কোড

[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0
                                                   green:171.0/255.0
                                                    blue:171.0/255.0
                                                   alpha:1.0] CGColor]];

171.0প্রয়োজনীয় রঙের সাথে সম্পর্কিত রঙের সাথে প্রতিস্থাপন করুন ।


14

এই প্রশ্নটি গুগল অনুসন্ধানে বেশ উঁচুতে দেখায় এবং বেশিরভাগ অংশের জন্য কাজ করে! আমি খুঁজে পেয়েছি যে সালমান জায়েদির উত্তর আইওএস 7 এর জন্য আংশিকভাবে সঠিক ছিল।

আপনাকে "রিভার্টিং" কোডে একটি পরিবর্তন করতে হবে। আমি দেখতে পেয়েছি যে প্রত্যাবর্তনের জন্য নিম্নলিখিতগুলি নিখুঁতভাবে কাজ করেছে:

textField.layer.cornerRadius = 0.0f;
textField.layer.masksToBounds = YES;
textField.layer.borderColor = [[UIColor blackColor] CGColor];
textField.layer.borderWidth = 0.0f;

আমি বুঝতে পারি যে এটি সম্ভবত iOS 7 এর পরিবর্তনের কারণে।


10

গৃহীত উত্তর থেকে এই কর্ম প্রক্রিয়া সহজ করার জন্য, আপনার কাছে তৈরি করতে পারেন শ্রেণী জন্য UIView(textfields জন্য না শুধুমাত্র UIView সব উপশ্রেণী, এই কাজ থেকে:

UIView + + Additions.h:

#import <Foundation/Foundation.h>

@interface UIView (Additions)
- (void)setBorderForColor:(UIColor *)color 
                    width:(float)width 
                   radius:(float)radius;
@end

UIView + + Additions.m:

#import "UIView+Additions.h"

@implementation UIView (Additions)

- (void)setBorderForColor:(UIColor *)color 
                    width:(float)width
                   radius:(float)radius
{
    self.layer.cornerRadius = radius;
    self.layer.masksToBounds = YES;
    self.layer.borderColor = [color CGColor];
    self.layer.borderWidth = width;
}

@end

ব্যবহার:

#import "UIView+Additions.h"
//...
[textField setBorderForColor:[UIColor redColor]
                       width:1.0f
                      radius:8.0f];

9

আপনি যদি গোলাকার কোণগুলির সাথে একটি টেক্সটফিল্ড ব্যবহার করেন তবে এই কোডটি ব্যবহার করুন:

    self.TextField.layer.cornerRadius=8.0f;
    self.TextField.layer.masksToBounds=YES;
    self.TextField.layer.borderColor=[[UIColor redColor]CGColor];
    self.TextField.layer.borderWidth= 1.0f;

সীমানা অপসারণ করতে:

self.TextField.layer.masksToBounds=NO;
self.TextField.layer.borderColor=[[UIColor clearColor]CGColor];


4

যে কোনও ভিউতে সীমানা রঙ (বা ইউআইভিউ সাবক্লাস) কিছুটা কোডিং দিয়ে স্টোরিবোর্ড ব্যবহার করেও সেট করা যেতে পারে এবং যদি আপনি একাধিক UI অবজেক্টে সীমানা রঙ নির্ধারণ করেন তবে এই পদ্ধতিরটি সত্যই কার্যকর হতে পারে।

এটি কীভাবে অর্জন করা যায় তার নীচে পদক্ষেপগুলি দেওয়া হল,

  1. CALayer ক্লাসে একটি বিভাগ তৈরি করুন। উপযুক্ত নাম সহ ইউআইক্লোর টাইপের একটি সম্পত্তি ঘোষণা করুন , আমি এটির নাম বর্ডার ইউআইক্লোর হিসাবে দেব
  2. এই সম্পত্তিটির জন্য সেটার এবং গেটর লিখুন।
  3. 'সেটার' পদ্ধতিতে লেয়ারের "সীমানা বর্ণ" বৈশিষ্ট্যটি নতুন রঙের সিজি কলর মানকে সেট করুন।
  4. 'গেটর' পদ্ধতিতে স্তরের সীমানা রঙের সাথে ইউআইক্লোর ফিরিয়ে দিন।

PS: মনে রাখবেন, বিভাগগুলিতে স্টোরের বৈশিষ্ট্য থাকতে পারে না। 'বর্ডার ইউক্লোর' গণনা করা সম্পত্তি হিসাবে ব্যবহৃত হয়, ঠিক কীভাবে আমরা ফোকাস করছি তা অর্জনের জন্য একটি রেফারেন্স হিসাবে।

নীচের কোড নমুনা দেখুন দয়া করে;

উদ্দেশ্য গ:

ইন্টারফেস ফাইল:

#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>

@interface CALayer (BorderProperties)

// This assigns a CGColor to borderColor.
@property (nonatomic, assign) UIColor* borderUIColor;

@end

বাস্তবায়ন ফাইল:

#import "CALayer+BorderProperties.h"

@implementation CALayer (BorderProperties)

- (void)setBorderUIColor:(UIColor *)color {
    self.borderColor = color.CGColor;
}

- (UIColor *)borderUIColor {
    return [UIColor colorWithCGColor:self.borderColor];
}

@end

সুইফট ২.০:

extension CALayer {
var borderUIColor: UIColor {
    set {
        self.borderColor = newValue.CGColor
    }

    get {
        return UIColor(CGColor: self.borderColor!)
    }
}
}

এবং অবশেষে আপনার স্টোরিবোর্ড / XIB এ যান, বাকি পদক্ষেপগুলি অনুসরণ করুন;

  1. আপনি যে ভিউ অবজেক্টের জন্য সীমানা রঙ সেট করতে চান তার উপর ক্লিক করুন।
  2. "ইউটিলিটি" (স্ক্রিনের ডান দিকের) প্যানেলে "পরিচয় পরিদর্শক" (বাম থেকে তৃতীয়) ক্লিক করুন)
  3. "ব্যবহারকারী সংজ্ঞায়িত রানটাইম অ্যাট্রিবিউটস" এর অধীনে একটি মূল পথ যুক্ত করতে "+" বোতামে ক্লিক করুন।
  4. কী রঙের ধরণটি "রঙ" এ সেট করুন।
  5. "লেয়ার.বোর্ডারউইক্লোর" হিসাবে কী পথের মান লিখুন। [মনে রাখবেন এটির যে পরিবর্তনশীল নামটি আপনি বিভাগে ঘোষণা করেছেন তা হওয়া উচিত , এখানে সীমানা রঙ নয় এটি সীমানার ইউআইক্লোর )।
  6. অবশেষে আপনার পছন্দসই রঙ বেছে নিন।

সীমানার রঙ দেখতে আপনি সর্বনিম্ন স্তরটিতে লেয়ার.বোর্ডার প্রস্থের মান সেট করতে হবে।

বিল্ড এবং রান। শুভ কোডিং। :)


দয়া করে একাধিক প্রশ্নের একই রকম উত্তর পোস্ট করবেন না। একটি ভাল উত্তর পোস্ট করুন, তারপরে অন্য প্রশ্নগুলিকে সদৃশ হিসাবে বন্ধ করতে ভোট / পতাকা দিন। যদি প্রশ্নটি সদৃশ না হয় তবে আপনার প্রশ্নের উত্তরগুলি শিখুন
জোস্লিবার

1

এখানে একটি সুইফ্ট বাস্তবায়ন। আপনি একটি এক্সটেনশান করতে পারেন যাতে এটি যদি আপনি পছন্দ করেন তবে অন্যান্য দর্শন দ্বারা এটি ব্যবহারযোগ্য হবে।

extension UIView {
    func addBorderAndColor(color: UIColor, width: CGFloat, corner_radius: CGFloat = 0, clipsToBounds: Bool = false) {
        self.layer.borderWidth  = width
        self.layer.borderColor  = color.cgColor
        self.layer.cornerRadius = corner_radius
        self.clipsToBounds      = clipsToBounds
    }
}

মত এই কল করুন: email.addBorderAndColor(color: UIColor.white, width: 0.5, corner_radius: 5, clipsToBounds: true)

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