在横向模式下无法增加 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 的宽度的主要内容,如果未能解决你的问题,请参考以下文章

无法在具有动态宽度的 Tablecell 中并排自动布局两个 UILabel

iOS:在横向模式下无法调整模式视图中的框架大小

选框和静态 UILabel 文本

无法使用约束右对齐视图

横向模式下的presentViewController宽度

为什么浏览智能横幅不会在横向模式下显示?