UICollectionViewCell alt sınıfını ve tüm düzeni otomatik düzende kod içinde yapıyorum. Bu benim init metodu: Ben translateAutoresizingMask satırını açıklama yaparkenÖzel UICollectionViewCell Otomatik Düzenleme NSInternalInconsistencyException error
- (id)initWithFrame:(CGRect)frame{
frame = CGRectMake(0, 0, 403, 533);
if (self = [super initWithFrame:frame]) {
self.translatesAutoresizingMaskIntoConstraints = NO;
PBCardPricesViewController *pricesView = [[PBCardPricesViewController alloc] init];
[self addSubview:pricesView.view];
UIImageView *background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"CardBackground"]];
[self addSubview:background];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-(20)-[background]|" options:0 metrics:nil views:@{@"background":background}]];
[self addConstraint:[NSLayoutConstraint constraintWithItem:pricesView.view attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:background attribute:NSLayoutAttributeLeft multiplier:1 constant:0]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[background]|" options:0 metrics:nil views:@{@"background":background}]];
[self addConstraint:[NSLayoutConstraint constraintWithItem:pricesView.view attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:background attribute:NSLayoutAttributeTop multiplier:1 constant:0]];
}
return self;
}
alıyorum: Ben bu hatayı alamadım zaman
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:0x1d83f540 H:[UIImageView:0x1d83f950]-(0)-| (Names: '|':PBCardViewCollectionCell:0x1d83b970)>",
"<NSAutoresizingMaskLayoutConstraint:0x1c55ad20 h=--& v=--& H:[PBCardViewCollectionCell:0x1d83b970(393)]>",
"<NSAutoresizingMaskLayoutConstraint:0x1c559410 h=--& v=--& UIImageView:0x1d83f950.midX == + 191.5>",
"<NSAutoresizingMaskLayoutConstraint:0x1c559450 h=--& v=--& H:[UIImageView:0x1d83f950(383)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x1d83f540 H:[UIImageView:0x1d83f950]-(0)-| (Names: '|':PBCardViewCollectionCell:0x1d83b970)>
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UICollectionView's implementation of -layoutSubviews needs to call super.'
Bunu nasıl göstermek için alırım istediğim şekilde mi? Neyi kaçırıyorum?
"@" | - (20) - [background] | "" önünde bir H: olması gerekiyor mu, yoksa bilmediğim bir sözdizim stili mi? Ayrıca, "pricesView" init işlevinden sonra serbest bırakılacak gibi görünüyor ... böylece sadece görünümünüz var. Bu sorunlara neden olacak mı? – yuf
H: isteğe bağlıdır. Bir H veya bir V belirtilmemişse, varsayılan değer H'dir. Şu an için denetleyici denetleyicisi kaybı iyidir. Sadece düzeni indirmeye çalışıyorum. – Civatrix
Gotcha, H, havalı hakkında bilmiyordum. Otomatik yeniden boyutlandırma maskesini kaldırmadan kısıtlama hatalarını gidermeyi denediniz mi? Maskenin hücrede gerekli olduğunu düşünüyorum ... Bunun yerine, backgroundView.translatesAutoresizingMaskIntoConstraints = NO; ve pricesView.view.translatesAutoresizingMaskIntoConstraints = NO; – yuf