首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用逆控制而不是设置框架的运动控制

用逆控制而不是设置框架的运动控制
EN

Stack Overflow用户
提问于 2014-10-24 20:52:37
回答 2查看 28关注 0票数 0

我已经构建了一个应用程序,在该应用程序中,需要移动一个与其所选索引相对应的UISegmentedControl。我使用这段代码来实现如下目的:

代码语言:javascript
复制
- (IBAction)segmentControlAction:(id)sender {
// Change which container will be visible
int selectedIndex = self.overviewSegmentControl.selectedSegmentIndex;

if (selectedIndex == 0) {
    // Show details and hide reviews & related

    // SHOW THE DETAILS
    [self showDetails];
} else if (selectedIndex == 1) {
    // Show Reviews and hide details & related

    // SHOW THE REVIEWS
    [self showOther];
} else if (selectedIndex == 2) {
    // Show related and hide details & reviews
}
}

-(void)showOther {
// Animate the reviews
[UIView animateWithDuration:.5 delay:0 usingSpringWithDamping:.9 initialSpringVelocity:1 options:UIViewAnimationOptionTransitionNone animations:^{
    // Hide details controls
    self.profileImageView.alpha = 0;
    self.seperatorImageView.alpha = 0;
    self.byLabel.alpha = 0;
    self.authorLabel.alpha = 0;

    // Move segmentControl
    [self.overviewSegmentControl setFrame:CGRectMake(self.overviewSegmentControl.frame.origin.x, self.previewImageView.frame.size.height + 8, self.overviewSegmentControl.frame.size.width, self.overviewSegmentControl.frame.size.height)];
}completion:^(BOOL finished) {
    // Completed
}];
}

-(void)showDetails{
// Animate the details
[UIView animateWithDuration:.5 delay:0 usingSpringWithDamping:.9 initialSpringVelocity:1 options:UIViewAnimationOptionTransitionNone animations:^{
    // Move segmentControl
    [self.overviewSegmentControl setFrame:CGRectMake(self.overviewSegmentControl.frame.origin.x, self.previewImageView.frame.size.height + 85, self.overviewSegmentControl.frame.size.width, self.overviewSegmentControl.frame.size.height)];

    // Hide details controls
    self.profileImageView.alpha = 1;
    self.seperatorImageView.alpha = 1;
    self.byLabel.alpha = 1;
    self.authorLabel.alpha = 1;
}completion:^(BOOL finished) {
    // Completed
}];
}

此代码移动UISegmentedControl,但在执行实际移动之前将其恢复到原来的位置。这导致控制发生了奇怪的跳跃。

我的UIViewController:

在这里,您可以看到我的约束:

,请有人解释一下这是如何工作的,以及如何用约束来移动控件而不是设置框架?

谢谢!埃里克

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-24 22:49:21

例如,您可以从段控制器“设置”一个约束到顶部:“顶层空间”,并相应地修改该约束。

这里有一个例子testMovingControll

票数 0
EN

Stack Overflow用户

发布于 2014-10-24 21:59:02

您可以在运行时编程地修改约束对象的".constant“属性,以设置定位和/或大小值。您可以在视图控制器的updateConstraints方法中这样做。

您可以将情节提要中的约束绑定到代码中的属性,就像绑定其他对象一样:控件-单击-从对象拖动到源代码窗口。然后,您可以在运行时访问它们。

另外,请确保将translatesAutoresizingMaskIntoConstraints设置为FALSE,否则可能会受到冲突约束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26556083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档