কিভাবে একটি বোতামের কোণে বৃত্তাকার


182

আমার একটি আয়তক্ষেত্রের চিত্র রয়েছে (জেপিজি) এবং এক্সকোডে গোলাকার কোণার সাথে একটি বোতামের পটভূমি পূরণ করতে এটি ব্যবহার করতে চাই।

আমি নিম্নলিখিত লিখেছি:

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
CGRect frame = CGRectMake(x, y, cardWidth, cardHeight);
button.frame = frame;
[button setBackgroundImage:backImage forState:UIControlStateNormal];

তবে, এই পদ্ধতির সাথে আমি যে বোতামটি পেয়েছি তার কোণগুলি বৃত্তাকার নয়: এটি পরিবর্তে একটি সরল আয়তক্ষেত্র যা ঠিক আমার মূল চিত্রের মতো দেখায়। আমার বোতামটি উপস্থাপনের জন্য গোলাকার কোণার পরিবর্তে আমি কীভাবে একটি চিত্র পেতে পারি?

ধন্যবাদ!

উত্তর:


436

আমি মনে করি আপনার সমস্যাটি আমি পেয়েছি, আমি ইউআইটিেক্সটরিয়া দিয়ে নিম্নলিখিত সমাধানটি চেষ্টা করেছি এবং আমি অনুমান করি এটি ইউআইবাটন এর সাথেও কাজ করবে।

সবার আগে আপনার .m ফাইলে এটি আমদানি করুন -

#import <QuartzCore/QuartzCore.h>

এবং তারপরে আপনার loadViewপদ্ধতিতে নিম্নলিখিত লাইনগুলি যুক্ত করুন

    yourButton.layer.cornerRadius = 10; // this value vary as per your desire
    yourButton.clipsToBounds = YES;

আশা করি এটি আপনার পক্ষে কাজ করে এবং যদি হ্যাঁ যোগাযোগ করে।


6
"ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্যগুলি" পরিদর্শকের সাথেও কাজ করে
অ্যাভি চেরি

দ্রুতগতির জন্যও কাজ করে! হ্যাঁ সত্যকে পরিবর্তন করুন।
অ্যান্ড্রু থমাস

119

আপনি এই রানটাইম বৈশিষ্ট্য দ্বারা অর্জন করতে পারেন

এখানে চিত্র বর্ণনা লিখুন

আমরা কাস্টম বোতামটি তৈরি করতে পারি screen

দয়া করে মনোযোগ দিন:

রানটাইম বৈশিষ্ট্যগুলিতে সীমানার রঙ পরিবর্তন করতে এই নির্দেশকে অনুসরণ করুন

  1. CALayer বিভাগ শ্রেণি তৈরি করুন

  2. এইচ ফাইলে

    @property(nonatomic, assign) UIColor* borderIBColor;
  3. এম ফাইলে:

    -(void)setBorderIBColor:(UIColor*)color {
        self.borderColor = color.CGColor;
    }
    
    -(UIColor*)borderIBColor {
        return [UIColor colorWithCGColor:self.borderColor];
    }

এখন থেকে সীমানা রঙের চেক স্ক্রিনশট সেট করতে

আপডেট উত্তর

ধন্যবাদ


4
শুধু আমি নাকি উত্তরের তথ্য অসম্পূর্ণ? এটা আসলে কাজ করে না। আপডেট: যতক্ষণ না আমি নির্দিষ্ট না করি এটি কাজ করে borderColor। তবে তারপরে এটি সর্বদা সীমানা রঙের জন্য কালো ব্যবহার করে।
জনি

3
বর্ধিত উত্তর: আইবিতে বর্ণ সেটটি সম্ভবত ইউআইকোলার টাইপের হতে পারে যা বর্ডার কালারের সাথে কাজ করে না, যা সিজি রঙের রেফের। বা এমন কিছু। সুতরাং সমাধানটি হ'ল @property(nonatomic, assign) UIColor* borderIBColor;হেডার ফাইলটিতে ( যেমন অন্য কোনও নামের সাথে সংঘর্ষে আসে না) এমন কিছু দিয়ে ক্যালায়ারের উপর একটি বিভাগ তৈরি করা এবং বাস্তবায়নটি হ'ল:-(void)setBorderIBColor:(UIColor*)color{self.borderColor = color.CGColor;} -(UIColor*)borderIBColor{return [UIColorcolorWithCGColor:self.borderColor];}
জনি

1
আপনি যদি কোনও সীমানা রঙ না চান তবে সীমানা রেডিয়াসটি 0 তে সেট করুন এবং আপনার কোনওটি থাকবে না!
জঙ্গলেদেভ

সুইফ্টের কী হবে?
জয়প্রকাশ দুবে

1
@ জয়প্রকাশদুবে আমি কালায়ারের এক্সটেনশন তৈরি করি।
ক্রুতার্থ প্যাটেল

14

আপনি DCKit নামক আমার লাইব্রেরিটি পরীক্ষা করতে চাইতে পারেন । এটি সুইফটের সর্বশেষ সংস্করণে লেখা হয়েছে ।

আপনি সরাসরি ইন্টারফেস নির্মাতার কাছ থেকে একটি বৃত্তাকার কোণার বোতাম / পাঠ্য ক্ষেত্র তৈরি করতে সক্ষম হবেন:

ডিসিকিট: গোলাকার বোতাম

এটিতে আরও অনেক দুর্দান্ত বৈশিষ্ট্য রয়েছে যেমন বৈধকরণের সাথে পাঠ্য ক্ষেত্রগুলি, সীমান্তগুলির সাথে নিয়ন্ত্রণগুলি, ড্যাশযুক্ত সীমানা, বৃত্ত এবং হেয়ারলাইন ভিউ ইত্যাদি has


11

একটি বৃত্ত পেতে সীমা কোণার ব্যাসার্ধের দিকে ধাক্কা :

    self.btnFoldButton.layer.cornerRadius = self.btnFoldButton.frame.height/2.0;

এখানে চিত্র বর্ণনা লিখুন

যদি বোতামের ফ্রেমটি একটি বর্গক্ষেত্র হয় তবে এটি ফ্রেম he উচ্চতা বা ফ্রেম.উইথথের কোনও বিষয় নয়। অন্যথায় উভয়টির মধ্যে বৃহত্তম ব্যবহার করুন।


7

আমদানি QuartCore ফ্রেমওয়ার্ক যদি এটা আমদানি আপনার বিদ্যমান প্রকল্পে সেখানে নেই, তারপর #import <QuartzCore/QuartzCore.h>মধ্যে viewcontroller.m

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect]];
CGRect frame = CGRectMake(x, y, width, height); // set values as per your requirement
button.layer.cornerRadius = 10;
button.clipsToBounds = YES;

6
UIButton* closeBtn = [[UIButton alloc] initWithFrame:CGRectMake(10, 50, 90, 35)];
//Customise this button as you wish then
closeBtn.layer.cornerRadius = 10;
closeBtn.layer.masksToBounds = YES;//Important

4

প্রথম সেট প্রস্থ = 100 এবং উচ্চতা = 100 বোতাম

উদ্দেশ্য সি সমাধান

YourBtn1.layer.cornerRadius=YourBtn1.Frame.size.width/2;
YourBtn1.layer.borderColor=[uicolor blackColor].CGColor;
YourBtn1.layer.borderWidth=1.0f;

সুইফট 4 সমাধান

YourBtn1.layer.cornerRadius = YourBtn1.Frame.size.width/2
YourBtn1.layer.borderColor = UIColor.black.cgColor
YourBtn1.layer.borderWidth = 1.0

2

আপনি যদি কেবল একটি কোণে বা দুটি কোণে একটি গোলাকার কোণ চান, ইত্যাদি ... এই পোস্টটি পড়ুন:

[ওবিজেসি] - গোলাকার কোণার সাথে ইউআইবাটন - http://goo.gl/kfzvKP

এটি একটি এক্সআইবি / স্টোরিবোর্ড সাবক্লাস। লিখিত কোড ছাড়াই আমদানি করুন এবং সীমানা সেট করুন।



2

সুইফট 3-র জন্য আপডেট হয়েছে:

ইউআইবাটন কোণার বৃত্তাকারে কোডের নীচে ব্যবহার করা হয়েছে:

 yourButtonOutletName.layer.cornerRadius = 0.3 *
        yourButtonOutletName.frame.size.height

2

আমার কোড চেষ্টা করুন। এখানে আপনি UIButton এর সমস্ত বৈশিষ্ট্য যেমন পাঠ্য রঙ, পটভূমি রঙ, কোণার ব্যাসার্ধ ইত্যাদি সেট করতে পারেন

extension UIButton {
    func btnCorner() {
        layer.cornerRadius = 10
        clipsToBounds = true
        backgroundColor = .blue
    }
}

এখন এই মত কল

yourBtnName.btnCorner()



0

এখানে চিত্র বর্ণনা লিখুন

জন্য উদ্দেশ্য সি :

submitButton.layer.cornerRadius = 5;
submitButton.clipsToBounds = YES;

জন্য সুইফট :

submitButton.layer.cornerRadius = 5
submitButton.clipsToBounds = true

0

সুইফট 4 আপডেট

আমি অনেকগুলি বিকল্প চেষ্টা করেও এখনও আমার ইউআইবাটনটি কোণঠাসা করতে সক্ষম হইনি। আমি viewDidLayoutSubviews()আমার সমস্যার সমাধানের ভিতরে কোণার ব্যাসার্ধের কোড যুক্ত করেছি ।

func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        anyButton.layer.cornerRadius = anyButton.frame.height / 2
    }

এছাড়াও আমরা নীচে কোণার রেডিয়াস সামঞ্জস্য করতে পারি

func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        anyButton.layer.cornerRadius = 10 //Any suitable number as you prefer can be applied 
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.