SORU
23 HAZİRAN 2009, Salı


Nasıl şeffaflık ile yuvarlatılmış dörtgen bir görünüm iphone yapılır?

Uygulamalar çok zaman alıcı bir işlem çalışırken yuvarlak köşeler ve bir activityİndicator ile şeffaf bir görünüm açılır.

Bunu nasıl yuvarlama ve yapmak mümkün sadece Interface Builder böyle bir şey kullanmak istiyorum bir çok yerde olduğu gibi () kullanarak mı? Veya, yuvarlak bir dörtgen ya da gerilebilir görüntü ile bir imageview kullanmalıyım? Arka plan çizmek almam gerekiyor?

Şimdiye kadar, ben yönetilen bir temel Görünüm ile benzer şeffaflık ayarı alphaValue Arabirimi Builder ancak yok yuvarlak köşeler, ve aynı zamanda şeffaflık gibi uygulamak için tüm subviews (istemiyorum metin ve activityindicator şeffaf olmak, ancak olsa bile koyduğum alphaValue bu İB göründüğü için göz ardı).

CEVAP
23 HAZİRAN 2009, Salı


view.layer.cornerRadius = radius;

Zor yoldan (ilk iPhone SDK gerekiyordu) drawRect: yöntem ile UIView kendi alt sınıfını oluşturmak için:

 CGContextRef context = UIGraphicsGetCurrentContext();
 CGContextSetRGBFillColor(context, 0,0,0,0.75);

 CGContextMoveToPoint(context, rect.origin.x, rect.origin.y   radius);
 CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y   rect.size.height - radius);
 CGContextAddArc(context, rect.origin.x   radius, rect.origin.y   rect.size.height - radius, 
                radius, M_PI, M_PI / 2, 1); //STS fixed
 CGContextAddLineToPoint(context, rect.origin.x   rect.size.width - radius, 
                        rect.origin.y   rect.size.height);
 CGContextAddArc(context, rect.origin.x   rect.size.width - radius, 
                rect.origin.y   rect.size.height - radius, radius, M_PI / 2, 0.0f, 1);
 CGContextAddLineToPoint(context, rect.origin.x   rect.size.width, rect.origin.y   radius);
 CGContextAddArc(context, rect.origin.x   rect.size.width - radius, rect.origin.y   radius, 
                radius, 0.0f, -M_PI / 2, 1);
 CGContextAddLineToPoint(context, rect.origin.x   radius, rect.origin.y);
 CGContextAddArc(context, rect.origin.x   radius, rect.origin.y   radius, radius, 
                -M_PI / 2, M_PI, 1);

 CGContextFillPath(context);

Not: rect bu kod alınır [self bounds] (ya da her neyse konuma istiyorsun, olmaz anlamı ile rect geçti drawRect: yöntem.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FRED

    FRED

    1 EKİM 2005
  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • Learn Math Tutorials

    Learn Math T

    20 Kasım 2011