通过 IB 添加了UITableView
。我试图以编程方式更改UITableView
的中心:
- (IBAction)OnClickPrescribingDoctorButton:(id)sender
{
[_prescribingDoctorTableView setNeedsDisplay];
NSLog(@"check before %f",_prescribingDoctorTableView.center.y);
_prescribingDoctorTableView.center = CGPointMake(50,200);
NSLog(@"check after %f",_prescribingDoctorTableView.center.y);
}
LOG:
2014-04-21 13:40:18.898 SmartWatch[1833:70b] check before 788.000000
2014-04-21 13:40:18.898 SmartWatch[1833:70b] check after 200.000000
2014-04-21 13:40:20.075 SmartWatch[1833:70b] check before 788.000000
2014-04-21 13:40:20.075 SmartWatch[1833:70b] check after 200.000000
正如您在日志中看到的那样,UITableView
的 Y轴值发生了变化,但我看不到任何效果或UITableView
正在重新绘制,因为我打电话给 setNeedsDisplay ,我也不明白为什么每当我通过点击{来调用此代码时, Y轴值值会恢复为788 {1}}。
答案 0 :(得分:0)
尝试使用[[_prescribingDoctorTableView superview] setNeedsLayout]而不是[_prescribingDoctorTableView setNeedsDisplay]来布局子视图。
如果这不起作用,则继承视图并覆盖方法
- (void)layoutSubviews (or) - (void)setFrame:(CGRect)frame
通过在这些方法中放置断点进行调试,以便您可以了解更新帧的位置。