Search code examples
ioslayoutautolayoutios-autolayoutvisual-format-language

Centering a container view


//I have 3 containers in the screen. Top/ middle / bottom (i've added just middle's codes here)

- (void)initLayoutConstrains
{
[self initMiddleLayoutContainerConstraint];
NSMutableArray *constraints = [[NSMutableArray alloc] init];
NSDictionary *viewsDictionary =     NSDictionaryOfVariableBindings(_topContainerBar, _bottomContainerBar, _middleContainerBar);
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"|-(>=20)-[_middleContainerBar(==200)]-(>=20)-|"
                                                               options: NSLayoutFormatAlignAllCenterX | NSLayoutFormatAlignAllCenterY
                                                               metrics:nil
                                                                 views:viewsDictionary]];

Solution

  • Edit: i have not much time but here is a temporary solution i came up with:

    CGFloat testViewHeight = 200;
    NSDictionary *metrics = @{ @"testViewY": @(self.view.frame.size.height / 2 - testViewHeight / 2), @"testViewHeight":@(testViewHeight)};
    
    [constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-testViewY-[testView(==testViewHeight)]"
                                                                             options: kNilOptions
                                                                             metrics:metrics
                                                                               views:viewsDictionary]];
    
    [constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[testView]|" options:kNilOptions metrics:nil views:viewsDictionary]];