IOS Autolayout(VFL) 처리 하위 뷰 가운데

2284 단어 ios 개발
VFL의 하위 보기가 가운데에 있어서 인터넷에서 많은 유용한 코드를 찾지 못하고 스스로 연구해 냈다.코드는 다음과 같다.
4
    UIActivityIndicatorView* prgrssView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    prgrssView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:prgrssView];
    [prgrssView release];
    NSDictionary* views = NSDictionaryOfVariableBindings(prgrssView);
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[prgrssView]-|" options:NSLayoutFormatAlignAllCenterX metrics:nil views:views]];
위의 코드는prgrssView를 수평으로 가운데에 놓을 수 있습니다.수직 코드는 다음과 같다.
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[prgrssView]-|" options:NSLayoutFormatAlignAllCenterY metrics:nil views:views]];

위 코드는 UIACtivity IndicatorView에만 유효하며,view의 너비와 높이가 있으면 위의 가운데 코드가 틀릴 수 있습니다.다른 방식으로 처리할 수 있는데, 구체적인 코드는 다음과 같다.
4
        //beging
        UIImageView* imagevew = [UIImageView autolayoutView];
        [imagevew setContentMode:UIViewContentModeScaleToFill];
        [imagevew setImage:_tabCellImage];
        [imagevew setTag:AEC_TAG_IMAGE_VIEW];
        [self.view addSubview:imagevew];
        [imagevew release];
        
        NSDictionary* views = NSDictionaryOfVariableBindings(imagevew);
        //    
        [self.view.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[imagevew(60)]" options:0 metrics:nil views:views]];
        //    
        [self.view.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[imagevew(60)]" options:0 metrics:nil views:views]];
        //    
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:imagevew attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]];
        //    
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:imagevew attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]];
        //end
이렇게 하면 이미지뷰의 크기가 60*60으로 설정되어 전체 보기에서 가운데에 있습니다.

좋은 웹페이지 즐겨찾기