点击时更改 TableView 高度(在 xib 中使用自动布局)
Posted
技术标签:
【中文标题】点击时更改 TableView 高度(在 xib 中使用自动布局)【英文标题】:Change TableView height When Tapped(using autolayout in xib) 【发布时间】:2016-03-02 11:38:47 【问题描述】:我的 ViewController 在最初加载时是这样的:
当点击显示按钮时,它必须改变如下:
我的代码是:
- (IBAction)show:(id)sender
[self change];
[tableView reloadData];
- (IBAction)close:(id)sender
[self change];
[tableView reloadData];
-(void)change
//assigning initial bounds to frame-1
CGRect frame1=CGRectMake(0, _pastProcessTV.frame.origin.y, self.view.bounds.size.width, self.pastProcessTV.bounds.size.height);
//assigning new bounds to frame-2
CGRect frame2=CGRectMake(0, **CGFloat y**,self.view.bounds.size.width,***CGFloat height***);
if (_showFullButton.isTouchInside)
tableView.frame = frame2;
else
tableview.frame = frame1;
我尝试了不同的方法。它不起作用。任何人都可以帮我提供 Y 坐标和宽度
【问题讨论】:
你在这使用自动布局吗? 是的,我正在使用自动布局 检查***.com/a/35746197/2963912 @techlorr: 这个链接只属于这个页面 @uday.m 不确定你是否有过这个排序,但如果没有,你需要更改约束,而不是 tableView 的框架。更改框架是自动布局之前的旧方法。请参阅我发布的关于某人为 UIView 设置动画的问题的答案,尽管这里的原理完全相同。 ***.com/a/26635410/2507277 【参考方案1】:当您使用自动布局时,您必须获取 tableview 的 topconstraint 的出口,并且当您想要扩展它时将其值设置为 0
所以它会按预期工作
如果您使用的是 ios 7
[self.view layoutIfNeeded]
是必填项
【讨论】:
然后致电[self.view layoutIfNeeded]
@techlorr:最初在 tableView 和导航栏之间还有一些其他的出口,比如图像视图和按钮。你能用一些示例代码解释一下吗
然后使用 layoutguide 或 superview 进行顶部约束
@techlorr: 你能给出第 1 帧和第 2 帧的约束吗【参考方案2】:
如果你必须使用自动布局,请尝试像这张图片
Make Layout Constraint Property
试试这段代码
#import "ViewController.h"
@interface ViewController ()
CGFloat oldtableViewTopValue;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *tableViewTopLC;
@end
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
- (void)didReceiveMemoryWarning
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
- (void) viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
oldtableViewTopValue = _tableViewTopLC.constant;
- (IBAction)showBtnAction:(id)sender
[UIView animateWithDuration:0.5f animations:^
_tableViewTopLC.constant = (_tableViewTopLC.constant==oldtableViewTopValue ? 0 : oldtableViewTopValue);
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
];
@end
【讨论】:
【参考方案3】:请关闭 Storyboard 的自动布局
【讨论】:
以上是关于点击时更改 TableView 高度(在 xib 中使用自动布局)的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 在 Xib 中动态设置 UITableView 高度