1. 程式人生 > >iOS學習筆記-如何獲取xib的autolayout後的frame

iOS學習筆記-如何獲取xib的autolayout後的frame

對於檢視view來說,如果想獲取xib中自動佈局後的frame,需要在layoutSubviews方法中獲取自動佈局後的frame才是準確的

- (void)layoutSubviews
{
 [super layoutSubviews];
 [self.contentView setNeedsLayout];
 [self.contentView layoutIfNeeded];
 //在這裡獲取frame
}

對於viewController來說,如果想獲取xib中自動佈局後的frame,需要在-(void)viewDidLayoutSubviews,-(void)viewWillLayoutSubviews方法中

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    self.moveItem.frame = CGRectMake(0, 0, self.scanView.frame.size.width, 10); //建立檢視需要在viewdidload等方法中,在這裡指定frame

    [UIView animateKeyframesWithDuration:2 delay:0 options:UIViewKeyframeAnimationOptionRepeat animations:^{

        self.moveItem
.frame = CGRectMake(0, self.scanView.frame.size.height - 10, self.scanView.frame.size.width, 10);; } completion:nil];//這裡的frame值就是正確的,故可以進行動畫 }