具有动态视图的Xcode故事板

时间:2015-12-14 11:38:18

标签: ios objective-c xcode xcode-storyboard

我遇到有关Xcode故事板的问题,并动态显示了观看次数。

我在故事板中有3个垂直对齐的视图,每个视图都是相互关联的,具有约束的上下关系

然而,在运行时我想要隐藏第二个视图并用3&#rd视图(这是一个tableview)替换它的位置并填充第二和第三个地方我尝试延长tableview的高度。 但是我不能成功。我尝试了很多东西,但最接近的是将第3个视图转换为第2个但是高度保持不变

我的最新代码位于下方

    if (status) {

       self.filterView.hidden = NO;
       self.contentTable.frame = contentTableFrame;

    } else {

       self.filterView.hidden = YES;
       CGFloat predictedHeight = self.contentTable.frame.size.height+(self.contentTableFrame.origin.y-self.filterView.frame.origin.y);
    self.contentTable.transform = CGAffineTransformMakeTranslation(0,       self.filterView.frame.origin.y-self.contentTable.frame.origin.y);

       for (NSLayoutConstraint *constraint in self.contentTable.constraints) {
           if (constraint.firstAttribute == NSLayoutAttributeHeight) {
                constraint.constant = predictedHeight;
           }

       }

    }

您还可以找到第3个视图约束的屏幕截图。我该怎么做才能解决这个问题?有没有人对它有任何想法?

enter image description here

我还有另一个解决这个问题的方法。但我也有另一个问题。 当我执行下面的代码行时,我的第三个视图移动到第二个视图的位置,但它的高度保持不变,所以在页面底部它似乎是一个空白区域。

        self.contentTable.transform = CGAffineTransformMakeTranslation(0,       self.filterView.frame.origin.y-self.contentTable.frame.origin.y);

为了解决这个问题,我试图改变它的高度(使用.frame = CGRectMake(.....)) 但是它没有用。然后我试图扩展第三个视图(这是一个tableview)并且它成功但是因为我已经缩放了它,所以桌面视图中的所有单元格也都缩放了桌子的外观已经坏了。所以我无法找到解决这个问题的方法。 这似乎是一个挑战。

由于

2 个答案:

答案 0 :(得分:0)

您可以隐藏filterview,但不能通过tableview替换它。 如果你想用表视图替换它。你需要使用方法BringSubviewToFront for That Tableview.it将把tablview带到前面并将filterview设置为back为ui隐藏。

答案 1 :(得分:0)

对不起,这是在Objective-c。 我得到了TableView(Storyboard)的最高限制。当我隐藏topView时,我得到topView的高度并更改顶部约束常量。你可以在@IBAction中看到它。最后,tableView被拉伸并占用topView的剩余空间。那是你在看什么?

<强> ViewController.h

push

<强> ViewController.m

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

@property (weak, nonatomic) IBOutlet UIView *topView;
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topTableViewConstraint;

- (IBAction)pushTest:(id)sender;
@end