iPhone, 为什么设置 navigation item 的alpha值会改变 self.view.frame?

Thanatos_L
  • 184

我使用了一个UIPanGestureRecognizer,在UIPanGestureRecognizer的滚动事件selector中,我需要不断的去改变navigation item的alpha值.代码入下:

-(void)scrollSlideView:(UIPanGestureRecognizer *) panGesture{
[self hideTopview:self.slideMultiViewController.view.frame.origin.y];
}
-(void)hideTopview:(CGFloat) alpha{

    alpha = (alpha - 64)/100;
    float adjustAlpha;
    if (alpha < 0) {
        alpha = 0;
    }
    if (alpha < 0.5) {
        self.navigationItem.rightBarButtonItem = self.rightBarItemSmall;
        self.navigationItem.titleView = self.naviShopName;
        self.naviShopName.frame = CGRectMake(0, 0, 200, 30);
        self.naviShopName.alpha =0;
        self.naviRightViewSmall.alpha = 0;
        
        adjustAlpha = (alpha)/0.5;
        self.naviShopName.alpha =1 - adjustAlpha;
        self.naviRightViewSmall.alpha = 1 - adjustAlpha;
        
    }
    if(alpha > 0.5){
        self.navigationItem.rightBarButtonItem = self.rightBarItemFull;
        self.navigationItem.titleView = nil;
        if (alpha>1) {
            adjustAlpha = 1;
        }
        else{
            adjustAlpha = (alpha - 0.5)/0.5;
            }
            self.naviRightViewFull.alpha = adjustAlpha;
        }
}

最初我的view.frame.height = 668,但是执行hideTopview以后,view.frame.height = 568,请问这是怎么回事呢?

回复
阅读 2k
2 个回答

可以尝试关闭scrollview的自动适配

很可能触发了布局,很多控件的属性设置有可能触发布局。

宣传栏