我的纵向 tableviewcell 在横向上不能很好地工作,即使使用自动调整大小的蒙版,所以我用一个新的 xib 文件重新排列了一些东西。
实施这一新格局的最佳方式是什么?我使用一堆 if 语句检查方向让它工作,但这似乎不太优雅。有没有更好的办法?
我的纵向 tableviewcell 在横向上不能很好地工作,即使使用自动调整大小的蒙版,所以我用一个新的 xib 文件重新排列了一些东西。
实施这一新格局的最佳方式是什么?我使用一堆 if 语句检查方向让它工作,但这似乎不太优雅。有没有更好的办法?
为纵向和横向创建两个 UITableViewCell nib 文件。和一个自定义类(CustomCell.h 和 CustomCell.m),以 UITableViewCell 作为基类,这两个 NIB 将继承并使用您的自定义单元格实现以下内容。
-(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
[[NSBundle mainBundle] loadNibNamed:@"customCell-Landscape" owner:self options:nil];
}else
{
[[NSBundle mainBundle] loadNibNamed:@"customCell-Portrait" owner:self options:nil];
}
[tableView reloadData];
}
然后在 tableview 数据源中
..
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @" identifier";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) {
[[NSBundle mainBundle] loadNibNamed:@"customCell-Landscape" owner:self options:nil];
}else {
[[NSBundle mainBundle] loadNibNamed:@"customCell-Portrait" owner:self options:nil];
}
}