Bir düğmenin köşeleri nasıl yuvarlaklaştırılır


182

Ben bir dikdörtgen görüntü (jpg) ve xcode yuvarlatılmış köşesi olan bir düğmenin arka planını doldurmak için kullanmak istiyorum.

Aşağıdakileri yazdım:

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

Ancak, bu yaklaşımla aldığım düğmenin köşeleri yuvarlatılmış değil: tam olarak orijinal görüntüme benzeyen düz bir dikdörtgen. Bunun yerine düğmemi temsil etmek için yuvarlak köşeli bir görüntüyü nasıl alabilirim?

Teşekkürler!

Yanıtlar:


436

Sanırım sorununuzu aldım, UITextArea ile aşağıdaki çözümü denedim ve sanırım bu da UIButton ile çalışacak.

her şeyden önce bunu .m dosyanıza içe aktarın -

#import <QuartzCore/QuartzCore.h>

ve sonra loadViewyönteminize aşağıdaki satırları ekleyin

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

Umarım bu sizin için çalışır ve evet ise iletişim kurarsınız.


6
Ayrıca "Kullanıcı Tanımlı Çalışma Zamanı Öznitelikleri" denetçisi ile çalışır
Avi Cherry

Ayrıca hızlı çalışır! Sadece EVET'i true olarak değiştirin.
Andrew Thomas

119

Bu RunTime Öznitelikleri ile elde edebilirsiniz

resim açıklamasını buraya girin

biz özel düğme yapabilirsiniz. sadece ekran görüntüsü ekli bakın.

lütfen dikkat:

kenarlık rengini değiştirmek için çalışma zamanı özniteliklerinde bu talimatları izleyin

  1. CALayer kategori sınıfı oluştur

  2. h dosyasında

    @property(nonatomic, assign) UIColor* borderIBColor;
  3. m dosyasında:

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

şimdi sınır renk kontrol ekran görüntüsünü ayarlamak için

güncellenmiş cevap

Teşekkürler


4
Sadece ben mi ya da cevaptaki bilgiler eksik mi? Gerçekten işe yaramıyor. Güncelleme: Belirtmediğim sürece çalışır borderColor. Ama sonra borderColor için her zaman siyah kullanır.
Jonny

3
Genişletilmiş yanıt: IB'de ayarlanan renk büyük olasılıkla CGColorRef olan borderColor ile çalışmayan UIColor tipindedir. Ya da böyle bir şey. Yani bir çözüm, CALayer'da @property(nonatomic, assign) UIColor* borderIBColor;başlık dosyasında (başka bir adla çatışmayan) bir şeyle bir kategori oluşturmaktır ve uygulama şu şekildedir :-(void)setBorderIBColor:(UIColor*)color{self.borderColor = color.CGColor;} -(UIColor*)borderIBColor{return [UIColorcolorWithCGColor:self.borderColor];}
Jonny

1
Bir kenarlık rengi istemiyorsanız, borderRadius'u 0 olarak ayarlayın ve bir tane olmayacak!
jungledev

Swift ne olacak?
Jayprakash Dubey

1
@JayprakashDubey i CALayer uzantısı oluşturmak.
Krutarth Patel

14

DCKit adlı kütüphanemi kontrol etmek isteyebilirsiniz . Swift'in son sürümünde yazılmıştır .

Doğrudan Arayüz oluşturucudan yuvarlatılmış bir köşe düğmesi / metin alanı yapabilirsiniz:

DCKit: yuvarlak düğme

Ayrıca, doğrulama içeren metin alanları, kenarlıklı kontroller, kesik kenarlıklar, daire ve saç çizgisi görünümleri gibi birçok harika özelliğe sahiptir.


11

Bir daire elde etmek için köşe yarıçapını sınırlara itmek :

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

resim açıklamasını buraya girin

Düğme çerçevesi bir kare ise, çerçeve. Yükseklik veya çerçeve. Genişliği önemli değildir. Aksi takdirde her ikisinin de en büyüğünü kullanın.


7

İthalat QuartCore çerçevesi daha sonra, varolan projede orada ithalat değilse #import <QuartzCore/QuartzCore.h>de 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

İlk ayarlanan genişlik = 100 ve Yükseklik = 100 düğmenin

Hedef C Çözümü

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

Swift 4 Çözümü

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

2

Sadece bir köşeye veya iki köşeye yuvarlatılmış bir köşe istiyorsanız, vb ... bu yazıyı okuyun:

[ObjC] - Yuvarlak köşeli UIButton - http://goo.gl/kfzvKP

Bu bir XIB / Storyboard alt sınıfı. Yazma kodu olmadan sınırları içe aktarın ve ayarlayın.



2

Swift 3 için güncellendi:

UIButton köşe yuvarlak yapmak için kodun altında kullanılır:

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

2

Kodumu dene. Burada metin rengi, arka plan rengi, köşe yarıçapı vb.Gibi UIButton'un tüm özelliklerini ayarlayabilirsiniz.

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

Şimdi böyle ara

yourBtnName.btnCorner()


0

İOS SWift 4 için

button.layer.cornerRadius = 25;
button.layer.masksToBounds = true;

0

resim açıklamasını buraya girin

For Amaç C :

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

İçin Swift :

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

0

Swift 4 Güncellemesi

Ayrıca hala benim UIButton yuvarlak köşeli alamadım birçok seçenek denedim. viewDidLayoutSubviews()Çözülen Sorunum'un içine köşe yarıçapı kodunu ekledim .

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

Ayrıca köşe Radius'u aşağıdaki gibi ayarlayabiliriz

func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        anyButton.layer.cornerRadius = 10 //Any suitable number as you prefer can be applied 
    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.