【问题标题】:UIView animate alpha when view is offscreen doesn't work视图不在屏幕时的 UIView 动画 alpha 不起作用
【发布时间】:2013-08-28 21:22:26
【问题描述】:

我有一个位于屏幕外的 UIView,我正在为框架设置动画,以便视图从底部滑入屏幕外并可见。我想同时为视图上的 UILabel 的 alpha 属性设置动画,以便它淡入。不幸的是,我似乎无法执行 alpha 动画,因为视图不在屏幕上并且似乎没有占据。它看起来像这样:

    nextCell.titleLabel.alpha = 0;
   [UIView animateWithDuration:collapsedAnimationDuration animations:^{
                        CGRect newFrame = lastCell.frame;
                        newFrame.origin = CGPointMake(lastCell.frame.origin.x , lastCell.frame.origin.y + THREAD_CELL_HEIGHT);
                        nextCell.frame = newFrame;
                        nextCell.titleLabel.alpha = 1;
                    }];

是否无法开始为子视图的 alpha 设置动画,因为它不在屏幕上?如果我将视图定位在屏幕上,然后尝试动画,它看起来很棒,但这不是我想要的效果。感谢您的帮助。

【问题讨论】:

    标签: ios objective-c animation uiview


    【解决方案1】:

    这段代码是在cellForRowAtIndexPath 中执行的吗?如果是这样,请尝试将其移至tableView:willDisplayCell:forRowAtIndexPath:。表格视图在显示之前重置单元格的各种属性。

    【讨论】:

      【解决方案2】:

      来自 AppDelegate didFinishLaunching 方法:

      self.myView = [[MyView alloc] initWithFrame:CGRectMake(320, 480, 400, 400)];
      self.myView.titleLabel.text = @"test text";
      
      self.myView.titleLabel.alpha = 0;
      [UIView animateWithDuration:10.0 animations:^{
          CGRect newFrame = self.myView.frame;
          newFrame.origin = CGPointMake(0 , 0);
          self.myView.frame = newFrame;
      
          self.myView.titleLabel.alpha = 1;
      }];
      
      [self.viewController.view addSubview:self.myView];
      

      MyView 就是这样:

      - (id)initWithFrame:(CGRect)frame
      {
          self = [super initWithFrame:frame];
          if (self) {
              // Initialization code
              [self addSubview:self.titleLabel];
          }
          return self;
      }
      
      - (UILabel *)titleLabel
      {
          if (!_titleLabel) {
              _titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
          }
          return _titleLabel;
      }
      

      我没有对您提供的代码进行任何重要更改,并且运行良好。因此,假设您没有按照 Tim 所说的进行操作(如果您这样做将无法正常工作),我们需要更多详细信息来帮助您。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        相关资源
        最近更新 更多