在横向模式下无法增加 UILabel 的宽度
Posted
技术标签:
【中文标题】在横向模式下无法增加 UILabel 的宽度【英文标题】:not able to increase width of UILabel in landscape mode 【发布时间】:2012-01-16 05:57:49 【问题描述】:我制作了一个 iPad 应用程序,其中我有一个名为 crollTableView 的 tableView,在我的 tableView 中,我在行的每个单元格中创建两个标签,名称为 capitalLabel 和 stateLabel,处于纵向模式,
现在我想在横向模式下增加标签的宽度,
这里是代码sn-p,
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
if(tableView==crollTableView)
static NSString *CellIdentifier=@"Cell";
static NSInteger StateTag = 1;
static NSInteger CapitalTag = 2;
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
// cell.backgroundColor=[UIColor yellowColor];
cell=[[[UITableViewCell alloc]initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease];
CGRect frame;
frame.origin.x = 0;
frame.origin.y = 0;
frame.size.height = 70;
frame.size.width = 650;
UILabel *capitalLabel = [[UILabel alloc] initWithFrame:frame];
capitalLabel.tag = CapitalTag;
capitalLabel.opaque = FALSE;
capitalLabel.font=[UIFont systemFontOfSize:20.0];
[cell.contentView addSubview:capitalLabel];
frame.origin.x += 680;
UILabel *stateLabel = [[UILabel alloc] initWithFrame:frame];
stateLabel.tag = StateTag;
stateLabel.font=[UIFont systemFontOfSize:17.0];
[cell.contentView addSubview:stateLabel];
UILabel* capitalLabel = (UILabel *) [cell.contentView viewWithTag:CapitalTag];
UILabel* stateLabel = (UILabel *) [cell.contentView viewWithTag:StateTag];
capitalLabel.text=[news2 objectAtIndex:indexPath.row];
stateLabel.text = [news3 objectAtIndex:indexPath.row];
capitalLabel.backgroundColor = [UIColor clearColor];
stateLabel.backgroundColor = [UIColor clearColor];
capitalLabel.textColor=[UIColor whiteColor];
stateLabel.textColor=[UIColor whiteColor];
if(count<[news3 count])
capitalLabel.numberOfLines = 0;
[capitalLabel sizeToFit];
stateLabel.numberOfLines = 0;
[stateLabel sizeToFit];
count++;
return cell;
我应该对我的代码进行哪些更改?
【问题讨论】:
你必须检查第一个方向,然后你必须根据你的方向设置标签的大小。 【参考方案1】:你应该重写
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
// Return YES for supported orientations.
return (interfaceOrientation == UIInterfaceOrientationPortrait);
通过检查当前方向是横向还是纵向的条件,您可以相应地设置标签的框架。
【讨论】:
【参考方案2】:尝试将autoresizingMask
设置为您想要自动缩放的视图:
在if (cell == nil)
之后alloc+init
的标签添加:
capitalLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
stateLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
【讨论】:
【参考方案3】:在 ios 中,更改方向时不关心增加任何控件的宽度 .. 只需将 2 个标签的自动调整掩码属性设置为 UIViewAutoresizingFlexibleWidth .. 这意味着您的控件的宽度会根据superview帧大小变化。
【讨论】:
【参考方案4】:尝试设置autoResizingMask
,以便视图在方向改变时自动调整。
您可以更改Xcode
size inspector 中的值。
【讨论】:
以上是关于在横向模式下无法增加 UILabel 的宽度的主要内容,如果未能解决你的问题,请参考以下文章