Я программно создаю представление и использую autolayout, никакого конструктора интерфейса вообще. В пользовательском контроллере ScrollView я добавляю UILabel и UIButton как subviews. Я хочу выровнять метку слева от экрана и кнопку справа от экрана. По какой-то причине моя кнопка выравнивается только слева от моего scrollview. Я сократил свой код, так что это только эти два ярлыка, и я не могу понять, почему он не будет выравниваться справа.
HWScrollViewController.m(Как я инициализирую основной просмотр прокрутки)
- (void)loadView
{
self.scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.scrollView.delegate = self;
self.view = self.scrollView;
}
HWListingDetailViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
UILabel *priceLabel = [[UILabel alloc] init];
UIButton *favouriteButton = [UIButton buttonWithType:UIButtonTypeContactAdd];
[priceLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
[favouriteButton setTranslatesAutoresizingMaskIntoConstraints:NO];
[priceLabel setText:@"$125.00"];
[favouriteButton setTitle:@"Add to Favourites" forState:UIControlStateNormal];
[self.view addSubview:priceLabel];
[self.view addSubview:favouriteButton];
[self.view addConstraints:@[
[NSLayoutConstraint constraintWithItem:priceLabel
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterY
multiplier:1
constant:0],
[NSLayoutConstraint constraintWithItem:priceLabel
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeft
multiplier:1
constant:5],
[NSLayoutConstraint constraintWithItem:favouriteButton
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterY
multiplier:1
constant:0],
[NSLayoutConstraint constraintWithItem:favouriteButton
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:1
constant:5],
}
Как вы можете видеть, зеленая метка цены выровнена правильно, но красная кнопка находится далеко от левой стороны экрана. (Я дал ему 5 пикселей смещения, чтобы показать, где он был.) Итак, почему правая сторона scrollview фактически находится на левой стороне? Как правильно выровнять по правому краю экрана? Где я неправ? Это сводит меня с ума!
Спасибо за любую помощь!
Финальные макеты: Я надеюсь, что окончательный макет будет примерно таким:
и я ожидаю, что он будет выглядеть так, если будет повернут в пейзаж: