【问题标题】:Moving UIView from One Tab to another将 UIView 从一个选项卡移动到另一个选项卡
【发布时间】:2015-07-22 07:09:15
【问题描述】:

我正在制作这种类型的屏幕。
我已经使用了 3 个 UIButton 并以编程方式给了它们边框。小红线是UIView。我为UIView 等宽 提供了一个约束,作为Trending Button。 现在我的问题是,当用户点击下一个按钮时,这个 UIView 应该移动到下一个按钮。

视图控制器是 600x600,下一个按钮是 200x0,所以如果我更改 @987654329 的值@ 到 200 将被硬编码,它会根据屏幕大小而改变。我希望它是完美的并且不知道任何其他方式。

更新:
我正在使用AutoLayout,因此为此我使用了[self.buttonBottomView setTranslatesAutoresizingMaskIntoConstraints:YES]; 和当我运行该应用程序时,按钮就像屏幕截图中一样乱七八糟。我在按钮上应用了一些constraints

【问题讨论】:

  • 您可以尝试隐藏和显示按钮底部的红线。这很容易
  • 工作完美但没有动画。谢谢:D
  • 你也可以试试uiview transition添加动画
  • [UIView transitionWithView:self.view duration:1.5 options:UIViewAnimationOptionTransitionFlipFromBottom //改成你喜欢的任何动画动画:^ { [self.view addSubview:myImageView1]; [self.view addSubview:myImageView2]; } completion:^(BOOL finished){ if (finished) { // 成功 } NSLog(@"Animations completed."); // 做点什么... }];

标签: ios objective-c uiview uibutton


【解决方案1】:

您可以使用NSLayoutConstraint,当您点击下一个按钮时将其更改为LeadingConstaint

代码:

- (void)changeSelectedByTapView:(UIView *)tapView {
    _currentSelectedView = tapView;
    self.lineImageViewLeadingConstaint.constant = tapView.frameX;
    self.lineImageViewWidthConstaint.constant = tapView.width;
    [UIView animateWithDuration:0.5f animations:^{
        [self.lineImageView.superview layoutIfNeeded];
    }];
}

【讨论】:

  • 您的约束一定是错误的,红线(视图)级别应该与您的按钮相同。
【解决方案2】:

改变你的 UIView 的框架。

view.frame = CGRectMake(0+buttonWidth*i, y, width, height);

i 是指数,0 代表Trending,1 代表粉丝制作,2 代表你的规则

此外,当您更改视图的框架时,它一次只显示在一个按钮上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多