将 UIView 从一个选项卡移动到另一个选项卡

Posted

技术标签:

【中文标题】将 UIView 从一个选项卡移动到另一个选项卡【英文标题】:Moving UIView from One Tab to another 【发布时间】: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."); // 做点什么... ]; 【参考方案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 代表你的规则

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

【讨论】:

以上是关于将 UIView 从一个选项卡移动到另一个选项卡的主要内容,如果未能解决你的问题,请参考以下文章

将数据从一个设计选项卡传递到另一个选项卡

将数据从一个选项卡控制器快速传递到另一个选项卡控制器

在特定条件下将数据从一个选项卡自动填充到另一个选项卡

将应用程序 URL 从一个选项卡复制到另一个选项卡导致 404 错误

在带有选项卡式控件的表单中,单击按钮会降低焦点选项卡页中的面板高度,如果移动到另一个选项卡并返回,则会更正

当我从一个选项卡单击到另一个选项卡时,如何使TabLayout中的选项卡不可滚动