自动调整子类 UITableViewCell 子视图的大小
Posted
技术标签:
【中文标题】自动调整子类 UITableViewCell 子视图的大小【英文标题】:Autoresizing subclassed UITableViewCell subviews 【发布时间】:2010-04-27 15:23:01 【问题描述】:我对 UITableViewCell 进行了子类化,并通过 layoutSubviews 方法合并了一些子视图。所有视图都在 initWithStyle 方法中分配和初始化,框架在 layoutSubviews 方法中设置,如下所示:
initWithStyle:...
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectZero];
myLabel.someProperties = Configured;
[self.contentView addSubview:myLabel];
layoutSubviews
CGRect labelRect = CGRectMake(10.0f, 5.0f, 35.0f, 180.0f);
myLabel.frame = labelRect;
在 viewController 中将 shouldAutoRotateOrientation 设置为 YES 会适当地旋转 NavigationController、tableView 和 UIToolbar,但 tableViewCells 的内容不会移动。就 AutoResizingMasks 而言,我不清楚在哪里或添加什么。到目前为止我尝试过的组合没有做任何事情。有人可以帮帮我吗?
谢谢!
【问题讨论】:
旋转设备时是否调用 layoutSubviews? 我不确定。我得试试 NSLog 看看。 【参考方案1】:我想出的答案是在 layoutSubviews 方法中使用条件编码根据方向放置视图框架
-(void)layoutSubviews
//For portrait mode (NOT PORTRAIT UPSIDE DOWN)
if ( UIDeviceOrientationIsPortrait([[UIDevice currentDevice]orientation]) )
CGRect portraitFrame = CGRectMake(Portrait Frame Coordinates);
myLabel.frame = portraitFrame;
else
//For landscape modes
CGRect landscapeFrame = CGRectMake(landscape frame coordinates);
myLabel.frame = landscapeFrame;
似乎被破解了,但它可以在子类 UITableViewCells 中工作
【讨论】:
以上是关于自动调整子类 UITableViewCell 子视图的大小的主要内容,如果未能解决你的问题,请参考以下文章
如何动态调整 UITableViewCell 内的两个文本标签宽度?
具有自动布局约束的 UITableViewCell 子类大小不正确
UITableViewCell 子类布局在禁用自动布局的故事板中搞砸了
在 UITableViewCell 中自动调整 UITextField 的大小