2017-07-27 4 views
-1

Ich habe zwei Bilder - self.profileImageView, self.profileImageViewOfLoggedInUser die 20px voneinander entfernt ist, und ich möchte, dass sie zu der Ansicht zu zentrieren.Zentrieren von Bildern auf einen Blick - Automatische Anordnung Objective C

Unten ist mein Code

static CGFloat const MeetingDetailNameLabelMarginX = 20; 
NSDictionary *views = @{ 
         @"imageView": self.profileImageView, 
         @"imageViewForLoggedInUser": self.profileImageViewOfLoggedInUser, 
         @"nameLabel": self.nameLabel, 
         @"companyNameLabel": self.companyNameLabel, 
         @"positionLabel": self.positionLabel, 
         @"statusLabel": self.statusLabel, 
         }; 

NSDictionary *metrics = @{ 
          @"imagePaddingLeft": @(MeetingDetailImageViewMarginX), 
          @"imagePaddingTop": @(MeetingDetailImageViewMarginY), 
          @"nameLabelPaddingLeft": @(MeetingDetailNameLabelMarginX), 
          @"nameLabelPaddingRight": @(MeetingDetailNameLabelMarginRightX), 
          @"nameLabelPaddingTop": @(MeetingDetailImageViewSize + MeetingDetailImageViewMarginY), 
          @"imageSize": @(MeetingDetailImageViewSize), 
          @"nameLabelHeight": @(nameLabelFrame.size.height), 
          @"otherLabelHeight": @(MeetingDetailOtherLabelHeight), 
          @"dateLabelWidth": @(self.dateLabel.frame.size.width), 
          @"statusLabelWidth": @(statusFrame.size.width), 
          @"statusLabelMarginLeftFromView": @(MeetingDetailImageViewMarginX), 
          }; 

// image left and width 
[self.detailContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[imageView(imageSize)]" 
                      options:0 
                      metrics:metrics 
                       views:views]]; 
[self.detailContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-imagePaddingLeft-[imageViewForLoggedInUser(imageSize)]" 
                      options:0 
                      metrics:metrics 
                       views:views]]; 

// image top and height 
[self.detailContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-imagePaddingTop-[imageView(imageSize)]" 
                      options:0 
                      metrics:metrics 
                       views:views]]; 
[self.detailContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-imagePaddingTop-[imageViewForLoggedInUser(imageSize)]" 
                      options:0 
                      metrics:metrics 
                       views:views]]; 

Bitte lassen Sie mich wissen, dass der Code hinzugefügt werden.

Unten ist der Screenshot Sie den Code: -

NSLayoutConstraint *centerXConstraint = [self.detailContainer.centerXAnchor constraintEqualToAnchor:_profileImageView.centerXAnchor]; 
[self.detailContainer addConstraint:centerXConstraint]; 

enter image description here

Antwort

0

Wenn Sie Image relativ zum Zentrum wollen es Superview ist, sollten Sie nicht einige seltsame Ränder oder etwas anderes angeben. Sie müssen nur 2 Einschränkungen für die Zentrierung und 2 Einschränkungen für die Größe von imageView angeben.

Von iOS 9 Sie diese einfachen api verwenden können:

NSLayoutConstraint * centerXConstraint = [superView.centerXAnchor constraintEqualToAnchor: imageView.centerXAnchor]; NSLayoutConstraint * centerYConstraint = [superView.CenterYAnchor constraintEqualToAnchor: imageView.centerYAnchor];

NSLayoutConstraint * imageViewHeight = [imageView.heightAnchor constraintEqualToConstant: heightValue]; NSLayoutConstraint * imageViewWidth = [imageView.widthAnchor constraintEqualToConstant: widthValue];

Dann können Sie die zweite Bildansicht relativ zur ersten Bildansicht einschränken (da die erste bereits eingeschränkt ist). Sie können VFL dafür oder was auch immer verwenden.

+0

Dank @Eugene, habe ich den obigen Code versucht und es zentriert erstes Bild, aber nicht das zweite Bild. Also ich möchte einen Anteil von zwei Bildern machen die Ansicht WRT. Bitte helfen Sie –

Verwandte Themen