#pragma mark - Class Methods + (BOOL)requiresConstraintBasedLayout { return YES; } #pragma mark - Init - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (!self) { return nil; } _imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cloud-logo"]]; _imageView.translatesAutoresizingMaskIntoConstraints = NO; _imageView.contentMode = UIViewContentModeRedraw; [_imageView setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [_imageView setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; [self addSubview:_imageView]; _label = [VSSyncUI descriptionLabel]; _label.translatesAutoresizingMaskIntoConstraints = NO; _label.text = NSLocalizedString(@"Vesper automatically keeps your notes backed up and shared across your devices. Sign in or create an account to get started. We’ll take care of the rest.", @""); _label.contentMode = UIViewContentModeRedraw; [_label setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [_label setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; [self addSubview:_label]; [self setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [self setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; self.backgroundColor = [UIColor redColor]; self.translatesAutoresizingMaskIntoConstraints = NO; return self; } #pragma mark - API - (void)updateLabelWidth:(CGFloat)superviewWidth { self.label.preferredMaxLayoutWidth = superviewWidth - (20.0f * 2.0f); } #pragma mark - Constraints - (void)updateConstraints { UIView *imageView = self.imageView; UIView *label = self.label; NSDictionary *bindings = NSDictionaryOfVariableBindings(imageView, label); NSLayoutConstraint *constraintCenterX = [NSLayoutConstraint constraintWithItem:self.imageView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]; [self addConstraints:@[constraintCenterX]]; NSArray *labelHorizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-20-[label]-20-|" options:0 metrics:nil views:bindings]; [self addConstraints:labelHorizontalConstraints]; NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[imageView]-20-[label]-20-|" options:0 metrics:nil views:bindings]; [self addConstraints:verticalConstraints]; [super updateConstraints]; }