SORU
31 Temmuz 2014, PERŞEMBE


NSLayoutConstraint "UİView-Encapsulated-Düzen-Yükseklik" ve nasıl yeniden hesaplamak için zorlamadan temiz gideyim

Bir UİTableView iOS8 altında bir film şeridi kısıtlamaları otomatik hücre Yükseklikleri kullanıyorum çalıştırıyorum.

Hücrelerim tek bir UİTextView içerir ve sözleşme için ona ihtiyacım var ve kullanıcı girişi dayalı genişletmek - daraltmak için dokunun/metin genişletin.

Metin görüntülemek için bir çalışma zamanı kısıtı ekleme ve kullanıcı olaylarına yanıt olarak: kısıtlamasını sürekli değiştirerek yapıyorum

-(void)collapse:(BOOL)collapse; {

    _collapsed = collapse;

    if(collapse)
            [_collapsedtextHeightConstraint setConstant: kCollapsedHeight]; // 70.0
        else
            [_collapsedtextHeightConstraint setConstant: [self idealCellHeightToShowFullText]];

    [self setNeedsUpdateConstraints];

}

Bunu Whenver, ben tableView güncellemeleri sarın ve tableView ihtiyaçlarını updateConstraint ayarlayın:

[tableView beginUpdates];

[_briefCell collapse:!_showFullBriefText];

[tableView setNeedsUpdateConstraints];
// I have also tried 
// [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
// with exactly the same results.

[tableView endUpdates];

Bunu yaparken, cep telefonum (ve buna rağmen bunu animasyon) ama sınırlı bir uyarı alıyorum genişletin:

2014-07-31 13:29:51.792 OneFlatEarth[5505:730175] Unable to simultaneously satisfy constraints.

Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 

(

    "<NSLayoutConstraint:0x7f94dced2b60 V:[UITextView:0x7f94d9b2b200'Brief text: Lorem Ipsum i...'(388)]>",

    "<NSLayoutConstraint:0x7f94dced2260 V:[UITextView:0x7f94d9b2b200'Brief text: Lorem Ipsum i...']-(15)-|   (Names: '|':UITableViewCellContentView:0x7f94de5773a0 )>",

    "<NSLayoutConstraint:0x7f94dced2350 V:|-(6)-[UITextView:0x7f94d9b2b200'Brief text: Lorem Ipsum i...']   (Names: '|':UITableViewCellContentView:0x7f94de5773a0 )>",

    "<NSLayoutConstraint:0x7f94dced6480 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7f94de5773a0(91)]>"



 )

Will attempt to recover by breaking constraint 

<NSLayoutConstraint:0x7f94dced2b60 V:[UITextView:0x7f94d9b2b200'Brief text: Lorem Ipsum i...'(388)]>

388 UİTextview başka kısıtlamalar benim böyle büyük mükafat/İB vardır yükseklik mycalculated.

Son bir beni rahatsız ediyor - UIView-Encapsulated-Layout-Height ilk işlenmiş hücrenin hesaplanan yükseklik - ( >UİTextView boyumu ayarlanmış olduğunu tahmin ediyorum Bu türetilmiş bir kısıtlama sonra güncelleştirilmiş bir kullanıcı veriyorsun doğru cnstraint görünmüyor howevcer = 70.0).

Düzen kodu yükseklik benim kısıtlaması kırmaya çalışıyor diyor, ancak daha da kötüsü, mi - hücre yüksekliğini hesaplamak için gider ve her şey istediğim gibi çizer değil.

, "(Otomatik hücre boyutlandırma) için hesaplanan yükseklik olduğunu tahmin ediyorum ve nasıl yeniden hesaplamak için zorlamadan temiz bir şekilde gitmeli miyim?"--Düzen sıkıştırılmış UİView Yükseklik NSLayoutConstraint ne demek

CEVAP
11 EYLÜL 2014, PERŞEMBE


999 7* *önceliğini düşürmek için çalışın. Sistemi UIView-Encapsulated-Layout-Height kısıtlama sağlanan bu şekilde her zaman önceliklidir.

-tableView:heightForRowAtIndexPath: sana dönmek ne dayanmaktadır. Geri dönmek için doğru değer ve kendi kısıtlaması yapmak ve oluşturulan bir aynı olmalıdır. Kendi kısıtlama için daha düşük bir öncelik sadece daralt/Genişlet animasyonlar uçuş sırasında geçici olarak çatışmaları önlemek için gereklidir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kayla Caton - Peet

    Kayla Caton

    23 HAZİRAN 2012
  • magnum33563

    magnum33563

    8 NİSAN 2011
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005