iOS'ta Otomatik Düzen uygulamasında yeniyim. Prensip olarak kavramı gerçekten çok seviyorum ama en basit şeyleri yapmaya çalışırken beni delirtiyor. Sanırım hala basit bazı temel prensipleri kaçırıyorum. Bir uygulamada onunla çalışmaya başlamadan önce temel bilgileri yaparak ve öğrenmeye çalışıyorum, bu yüzden çok basit test projeleri yapıyorum. İşte, beklendiği gibi çalışmadığı kadar basit olanı. Önce işe yarayan kısım. IB, ben tüm viewcontroller doldurmak için bir Görünüm ekleyin ve XCode otomatik IB ile tamamladığınızda/Firar ve 0'a Space Lider/Üst/Alt kısıtlamaları belirler, bu beklendiği gibi çalışır:Sınırları Ayarlama, bunları IB'de ayarlamaktan programlı olarak farklı mı?
Büyük üzere döner!
Şimdi kodda aynı şeyi yapmaya çalışıyorum: Tek-view uygulaması için varsayılan kod dışındaki orada tüm kod- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIView *redView = [[UIView alloc] initWithFrame:self.view.bounds];
redView.backgroundColor = [UIColor redColor];
[self.view addSubview:redView];
redView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:0.0f]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:0.0f]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]];
}
.
ben programlı IB ile olsun aynı şeyi ayna çalışırken, yukarıdaki kod çalıştırmasına
, bu dönüşten sonra olsun:Nasıl olur aynı kısıtlamalar farklı sonuçlara yol olduğunu? Muhtemelen çok basit ve utanç verici aptalca bir şey eksik. Yardım et!!!
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[redView]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(redView)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[redView]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(redView)]];
IB AutoLayout bir ağrı olabilir ve ben Görsel Biçim Dili ile aşinalığım constraintWithItem daha az iş olduğu bulundu: Burada
Teşekkürler! (V: | [redView] içinde eksik | ekledikten sonra ... çalışır ama neden diğer kodum çalışmıyor ?? ne IB gösterir, değil mi ??? – user1459524
Evet, orada bir boru eksik oldu Sabit, Ve, dürüst olmak gerekirse, ben VFL buldum ve AutoLayout ihtiyaçları için daha fazla baktım. – geraldWilliam
Merhaba 6 ay sonra aynı problemle karşılaştım ama mycontroller.view ile şapka doğrudan, mycontroller.view içinde bir görünüm değil. Ve sadece bir şey yok! – shinyuX