2011-10-27 18 views
10

Yuvarlak Dikdörtgen UIButton kadar iyi görünmüyor:Özel Düğme çerçeve ben şöyle bir özel düğme çerçeve çizmeye çalışıyorum

UIBezierPath *stroke = [UIBezierPath bezierPathWithRoundedRect:self.bounds 
                cornerRadius:RECT_CORNECR_RADIUS]; 

[stroke stroke]; 

Ama nedense köşe eğrileri tarafı daha düşünür bak. UIButton'un varsayılan çerçevesine bakarsanız, çok eşittir. A, bir UIButton, B özel bir düğmedir.

Bunu, UIButton'a nasıl daha çok nasıl yapabilirim.

A is a UIButton, B is a custom button

cevap

25

Düğmenizin sınırlarını okşayorsunuz. Bu, çizginizin görünümünü kenardan ortalayacak, bu yüzden çizginin kalınlığının yarısı sınırların dışında ve çizilmez. Köşelerde tam kalınlık nedeni budur. Sınırlar dikdörtgeninizde CGRectInset'u kullanın (satırınızın yarısına kadar ekleyin) ve bu doğrultudaki konturları uygulayın.

+0

Bu kadar! Şimdi hepsi anlam kazanıyor. CGRectInset (self.bounds, 1, 1) yaptım ve hepsi mükemmel çalıştı. Teşekkürler! – Nikolozi

+0

Teşekkürler, daha önce eklediğinizde, kesik yuvarlanmış bir rektin köşelerine alevlendi ve ben bunu çözdüm. – thomh

0

sahip sorun muhtemelen antialiasing kaynaklanmaktadır. BeizerPath'inizi çizmeden önce CoreGraphics'in antialiasing ayarlarını değiştirmeyi deneyebilirsiniz.

Düğümünüzün ve cornerRadius özelliğinin CALayer özelliğini kullanmak daha kolay bir çözümdür. Tabii

self.layer.cornerRadius = RECT_CORNER_RADIUS; 
self.layer.borderWidth = 1.0f; 
self.layer.borderColor = [UIColor blackColor].CGColor; 

bu çalışmak için başlık QuartzCore çerçeveyi içe içe unutmayın: self özel düğmeyse bir yuvarlak köşeyi

çizmek kolay olurdu (#import)