Как я могу централизовать UIView программно поверх существующего UIView, используя Autolayout?
В случае успешной проверки Foursquare мое приложение iPhone добавляет представление поверх отображаемого представления.
Я хочу, чтобы представление было сосредоточено на X и Y и для него имела определенную ширину и высоту, используя автозапуск, но я не уверен, какие ограничения добавить программно. Я знаю, как это сделать в Storyboard, но я не уверен, что именно вводить код, чтобы сделать то же самое, что и это представление, добавляется позже в ответ на успешное действие в приложении.
Я не могу заставить его работать правильно, а UIView имеет наконечник, который он загружает с помощью loadNibNamed:.
SuccessView *successfulCheckInView = [[SuccessView alloc] initWithFrame:CGRectZero];
successfulCheckInView.placeNameLabel.text = properVenue.name;
successfulCheckInView.placeAddressLabel.text = properVenue.address;
successfulCheckInView.delegate = self;
[self.ownerVC.view addSubview:successfulCheckInView];
Ответы
Ответ 1
Попробуйте следующее:
NSLayoutConstraint *xCenterConstraint = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:view2 attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0];
[superview addConstraint:xCenterConstraint];
NSLayoutConstraint *yCenterConstraint = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:view2 attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0];
[superview addConstraint:yCenterConstraint];
Обновлен для Swift:
NSLayoutConstraint(item: view1, attribute: .centerX, relatedBy: .equal, toItem: view2, attribute: .centerX, multiplier: 1, constant: 0).isActive = true
NSLayoutConstraint(item: view1, attribute: .centerY, relatedBy: .equal, toItem: view2, attribute: .centerY, multiplier: 1, constant: 0).isActive = true