วิธีการปัดมุมของปุ่ม


182

ฉันมีรูปสี่เหลี่ยมผืนผ้า (jpg) และต้องการใช้เพื่อเติมพื้นหลังของปุ่มที่มีมุมมนใน xcode

ฉันเขียนสิ่งต่อไปนี้:

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

อย่างไรก็ตามปุ่มที่ฉันใช้ด้วยวิธีนั้นไม่มีมุมโค้งมน: มันเป็นสี่เหลี่ยมธรรมดาที่ดูเหมือนภาพต้นฉบับของฉัน ฉันจะหาภาพที่มีมุมมนเพื่อแสดงปุ่มของฉันได้อย่างไร

ขอบคุณ!

คำตอบ:


436

ฉันคิดว่าฉันมีปัญหาของคุณฉันลองวิธีแก้ปัญหาต่อไปนี้ด้วย UITextArea และฉันคิดว่าสิ่งนี้จะทำงานกับ UIButton ได้เช่นกัน

ก่อนอื่นนำเข้าสิ่งนี้ในไฟล์. m ของคุณ -

#import <QuartzCore/QuartzCore.h>

แล้วในloadViewวิธีการของคุณเพิ่มบรรทัดต่อไปนี้

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

หวังว่ามันจะทำงานได้ดีสำหรับคุณและถ้าใช่จะติดต่อสื่อสาร


6
ทำงานร่วมกับผู้ตรวจสอบ "คุณสมบัติที่กำหนดโดยผู้ใช้รันไทม์"
Avi Cherry

ทำงานได้อย่างรวดเร็วด้วย! เพียงเปลี่ยนใช่เป็นจริง
Andrew Thomas

119

คุณสามารถทำได้ด้วยคุณสมบัติ RunTime นี้

ป้อนคำอธิบายรูปภาพที่นี่

เราสามารถสร้าง button.just เองดูภาพหน้าจอที่แนบมา

กรุณาให้ความสนใจ:

ในแอ็ตทริบิวต์รันไทม์เพื่อเปลี่ยนสีของเส้นขอบทำตามคำแนะนำนี้

  1. สร้างคลาสหมวดหมู่ของ CALayer

  2. ในไฟล์ h

    @property(nonatomic, assign) UIColor* borderIBColor;
  3. ในไฟล์ m:

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

ตอนนี้เป็นต้นไปเพื่อตั้งค่าภาพหน้าจอตรวจสอบสีขอบ

คำตอบที่อัปเดต

ขอบคุณ


4
เพียงฉันหรือเป็นข้อมูลในคำตอบที่ไม่สมบูรณ์? มันใช้งานไม่ได้จริงๆ ปรับปรุง: borderColorมันทำงานตราบเท่าที่ฉันไม่ได้ระบุ แต่ก็มักจะใช้สีดำสำหรับเส้นขอบสี
Jonny

3
คำตอบเพิ่มเติม: ชุดสีใน IB น่าจะเป็นประเภท UIColor ซึ่งไม่สามารถใช้ได้กับ borderColor ซึ่งเป็น CGColorRef หรืออะไรทำนองนั้น ดังนั้นทางออกคือการสร้างหมวดหมู่บน CALayer โดยมีบางสิ่งที่คล้ายกัน@property(nonatomic, assign) UIColor* borderIBColor;(ซึ่งไม่ขัดแย้งกับชื่ออื่น) ในไฟล์ส่วนหัวและการใช้งานคือ:-(void)setBorderIBColor:(UIColor*)color{self.borderColor = color.CGColor;} -(UIColor*)borderIBColor{return [UIColorcolorWithCGColor:self.borderColor];}
Jonny

1
หากคุณไม่ต้องการสีเส้นขอบให้ตั้งค่าขอบเขตรัศมีเป็น 0 และคุณจะไม่มีสี!
jungledev

แล้ว Swift ล่ะ?
Jayprakash Dubey

1
@JayprakashDubey ฉันสร้างส่วนขยายของ CALayer
Krutarth Patel

14

คุณอาจต้องการที่จะตรวจสอบห้องสมุดของฉันเรียกว่าDCKit มันเขียนในรุ่นล่าสุดของสวิฟท์

คุณสามารถสร้างปุ่ม / ฟิลด์มุมมนจากตัวสร้างส่วนต่อประสานได้โดยตรง:

DCKit: ปุ่มโค้งมน

นอกจากนี้ยังมีคุณสมบัติอื่น ๆ อีกมากมายเช่นฟิลด์ข้อความที่มีการตรวจสอบความถูกต้องการควบคุมด้วยเส้นขอบเส้นประเส้นประวงกลมและมุมมองแนวเส้นผม


11

กดไปที่รัศมีมุมจำกัดขึ้นเพื่อรับวงกลม:

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

ป้อนคำอธิบายรูปภาพที่นี่

ถ้ากรอบของปุ่มเป็นสี่เหลี่ยมมันไม่สำคัญว่า frame.height หรือ frame.width มิฉะนั้นให้ใช้ขนาดที่ใหญ่ที่สุดของทั้งคู่


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 ของปุ่ม

Objective C Solution

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

โซลูชัน Swift 4

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

2

หากคุณต้องการมุมโค้งมนเพียงหนึ่งมุมหรือสองมุม ฯลฯ ... อ่านโพสต์นี้:

[ObjC] - UIButton ที่มีมุมมน - http://goo.gl/kfzvKP

มันเป็นคลาสย่อย XIB / Storyboard นำเข้าและตั้งค่าเส้นขอบโดยไม่ต้องเขียนโค้ด



2

อัปเดตสำหรับ Swift 3:

ใช้รหัสด้านล่างเพื่อให้ UIButton รอบมุม:

 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

ป้อนคำอธิบายรูปภาพที่นี่

สำหรับวัตถุประสงค์ C :

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

สำหรับSwift :

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

0

อัพเดต Swift 4

ฉันยังลองตัวเลือกมากมาย แต่ฉันก็ไม่สามารถทำให้ UIButton กลมจนมุมได้ ฉันเพิ่มรหัสรัศมีมุมภายใน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.