Ограничения для замены рамки для UIButton

Я пытаюсь заменить установленный фрейм ограничениями для UIButton, но мой код продолжает падать, что я делаю неправильно?

- (void)CreateButton {
self.Button = [[UIButton alloc] init];
//self.Button.frame = CGRectMake(30, 30, 100, 100);
[self.Button addConstraint:[NSLayoutConstraint constraintWithItem:MyScrollView
                                                          attribute:NSLayoutAttributeTop
                                                          relatedBy:NSLayoutRelationEqual
                                                             toItem:self.myButton
                                                          attribute:NSLayoutAttributeTop
                                                         multiplier:2.0
                                                           constant:30]];
[self.myButton addConstraint:[NSLayoutConstraint constraintWithItem:MyScrollView
                                                          attribute:NSLayoutAttributeHeight
                                                          relatedBy:NSLayoutRelationEqual
                                                             toItem:self.myButton
                                                          attribute:NSLayoutAttributeHeight
                                                         multiplier:3.0
                                                           constant:50]];
[self.myButton setBackgroundColor:[UIColor orangeColor]];
[self.myButton setTitle:@"Press Me" forState:UIControlStateNormal];
[self.myButton setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal];
[MyScrollView addSubview:self.myButton];

person Cameron    schedule 26.05.2016    source источник
comment
Сбой, а? Мы, вероятно, могли бы быть более полезными, если бы вы показали нам сообщение об ошибке и сообщили нам точную строку вашего кода, которая вызывает сбой.   -  person luk2302    schedule 26.05.2016
comment
предполагая, что вы хотите установить ограничения для одной кнопки, по крайней мере, у вас есть два разных кода в приведенном выше коде (self.Button и self.myButton)   -  person slxl    schedule 26.05.2016
comment
и постарайтесь придерживаться соглашений об именах obj-C ради простоты Universe. Это поможет вам избежать подобных проблем в будущем developer.apple.com/library/ios/documentation/Cocoa/Conceptual/   -  person slxl    schedule 26.05.2016
comment
Также вам нужно добавить свой UIButton в свой scrollView, прежде чем добавлять свои ограничения.   -  person AnthonyR    schedule 26.05.2016
comment
И вы должны написать: self.myButton.view.translatesAutoresizingMaskIntoConstraints = NO; перед добавлением ограничений.   -  person AnthonyR    schedule 26.05.2016
comment
И я согласен с @slxl, я предполагаю, что вы хотели написать self.myButton вместо self.Button в начале своего кода.   -  person AnthonyR    schedule 26.05.2016


Ответы (1)


Вы должны добавить ограничение в MyScrollView.

person fabe    schedule 26.05.2016
comment
это не должно привести к аварии. - person Teja Nandamuri; 26.05.2016
comment
Из документации UIView:addConstraint: ограничение должно включать только представления, которые находятся в пределах области действия принимающего представления. В частности, любые задействованные представления должны быть либо самим принимающим представлением, либо подпредставлением принимающего представления. Говорят, что ограничения, добавляемые к представлению, удерживаются этим представлением. Система координат, используемая при оценке ограничения, является системой координат вида, содержащего ограничение. - person fabe; 26.05.2016