検索

ホームページ  >  に質問  >  本文

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

我使用了一个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,请问这是怎么回事呢?

PHPzPHPz2892日前303

全員に返信(2)返信します

  • PHPz

    PHPz2017-04-18 09:09:40

    スクロールビューの自動適応をオフにしてみてください

    返事
    0
  • 迷茫

    迷茫2017-04-18 09:09:40

    多くのコントロールのプロパティ設定によってレイアウトがトリガーされる可能性があります。

    返事
    0
  • キャンセル返事