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

  • kruno j

    kruno j

    6 Mayıs 2007
  • New Scientist

    New Scientis

    27 Kasım 2006
  • Phandroid

    Phandroid

    26 Ocak 2009