SORU
12 NİSAN 2013, Cuma


Sınıflara UİView için uygun bir uygulama mı?

Bazı özel UİView tabanlı giriş kontrol üzerinde çalışıyorum, ve görünümü ayarlama için uygun bir uygulama tespit etmeye çalışıyorum. Ne zaman çalışan bir UİViewController, oldukça basit kullanmak için loadView ilgili viewWill, viewDid yöntem, ama ne zaman sınıflara bir UİView, en yakın methosds var `awakeFromNib, drawRect layoutSubviews. (Kur ve enkaz geri aramaları açısından düşünüyorum.) Benim durumumda, layoutSubviews, çerçeve ve iç görüşlerimi kuruyorum ama ekranda hiçbir şey göremiyorum.

Benim görüşüme sahip olmak istediğim doğru yükseklik ve genişlik olduğundan emin olmak için en iyi yolu nedir? (Benim sorum ise iki cevap olabilir ancak otomatik düzen kullanarak, ben ise ne olursa olsun geçerlidir.) Uygun olanı "en iyi"?

CEVAP
12 NİSAN 2013, Cuma


Apple doc UIView alt nasıl oldukça net bir şekilde tanımlanmış.

Aşağıdaki liste, initWithFrame: layoutSubviews bak hele bak. Eski UIView sonraki çerçeve ve subviews düzenini Kur için tasarlanmıştır ise Kur çerçevesi için tasarlanmıştır.

Ayrıca initWithFrame: UIView programlı başlatmasını eğer sadece " hatırlıyorum. Eğer bir uç yükleniyor eğer dosya (ya da bir film şeridi), initWithCoder: kullanılacaktır. initWithCoder: çerçeve henüz yazılmış değil, Interface Builder içinde ayarladığınız Kare değiştiremezsiniz. Olarak kurulum için initWithCoder: initWithFrame: çerçeve arama düşünebilirsiniz in this answer önerdi.

Son olarak, eğer size yük UIView bir çıkıntı (ya da bir film şeridi), sen de var awakeFromNib fırsat gerçekleştirmek için özel çerçeve ve düzen başlatmaları, ne zamandan beri awakeFromNib deniyor garantili her görünümünde hiyerarşi olmuştur unarchived ve başlatıldı.

NSNibAwaking doc

Diğer nesnelere iletileri güvenli bir şekilde tüm nesneleri ve mutlaka, elbette uyanmış olmasa da unarchived başlatılır emin hangi awakeFromNib . içinden gönderilebilir

Ayrıca değer otomatik düzen ile açıkça görünüm çerçeve ayarlamanız gerektiğini kaydetti. Bunun yerine çerçeve otomatik olarak düzeni motoru tarafından hesaplanır böylece yeterli kısıtlamaları kümesi belirtmek gerekiyor.

documentation düz:

Geçersiz kılmak için yöntemler

Başlatma

  • initWithFrame:Bu yöntemi uygulamak önerilir. Ayrıca ek olarak özel başlatma yöntemleri uygulayabilirsiniz ya da, bu yöntem yerine.

  • initWithCoder:Sen Interface Builder bir uç manzaralı, dosya yükleme eğer bu yöntemi uygulamak ve özel bir görünüm gerektirir başlatma.

  • layerClassEğer görüşünü destekliyor Mağaza için farklı Temel Animasyon bir katman kullanmak istiyorsanız sadece bu yöntemi uygulamak. Örneğin, eğer OpenGL ES çizim yapmak için kullanıyorsanız, isteyeyim bu yöntem geçersiz kılmak ve CAEAGLLayer sınıfı döndürür.

Çizim ve baskı

  • drawRect:Eğer görüşünü özel bir içerik çekiyor eğer bu yöntemi uygulamak. Eğer görünüm herhangi bir özel çizim yapmak, bu geçersiz kılma önlemek mi yoksa yöntem.

  • drawRect:forViewPrintFormatter:Eğer baskı sırasında görüşün içeriği farklı bir şekilde çizmek istiyorsanız sadece bu yöntemi uygulamak.

Kısıtlamaları

  • requiresConstraintBasedLayoutEğer görünümü sınıfınızın kısıtlamaları düzgün çalışması gerekir eğer bu sınıf yöntemi uygulamak.

  • updateConstraintsEğer görünüm subviews arasında özel kısıtlamaları oluşturmak gerekiyorsa, bu yöntemi uygulamak.

  • alignmentRectForFrame:,frameForAlignmentRect:Bu yöntemler, sizin görüş diğer görüşlere hizalanır nasıl geçersiz kılmak için uygulamak.

Düzen

  • sizeThatFits:Yeniden boyutlandırma sırasında görüntü normalde daha farklı bir varsayılan boyutu sahip olmak istiyorsanız bu yöntemi uygulamak işlemleri. Örneğin, bu yöntem önlemek için kullanabilirsiniz subviews görüntülenemiyor noktaya küçülen görüntüle doğru.

  • layoutSubviewsEğer ya da kısıtlama daha subviews düzeni üzerinde daha kesin bir kontrol gerekiyorsa, bu yöntemi uygulamak veya autoresizing davranışlar sağlamak.

  • didAddSubview:,willRemoveSubview:Subviews ekleme ve çıkarma izlemek için gerektiğinde bu yöntemleri uygulamak.

  • willMoveToSuperview:,didMoveToSuperviewBu yöntemler görünümünde geçerli görüş hareketini takip gerektiği gibi uygulamak hiyerarşi.

  • willMoveToWindow:,didMoveToWindowFarklı bir pencere görünümü hareketlerini izlemek, gerektiğinde bu yöntemleri uygulamak.

Olay İşleme:

  • touchesBegan:withEvent:,touchesMoved:withEvent:,touchesEnded:withEvent:, touchesCancelled:withEvent: Uygulamak eğer dokunma olayları işlemek gerekiyorsa, bu yöntem doğrudan. ( hareket tabanlı, jest tanıyıcıları girişi kullanın.)

  • gestureRecognizerShouldBegin:Görünümü doğrudan dokunma olayları işler ve önlemek isteyebilirsiniz eğer bu yöntemi uygulamak bağlı jest ek eylemler tetikleme gelen tanıyıcıları.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Nightmare2005

    Nightmare200

    14 Ocak 2007
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009