【问题标题】:how to increase the size of subview of mainview如何增加主视图的子视图大小
【发布时间】:2014-01-24 13:14:51
【问题描述】:

我有一个编辑器,在上面 UIView 我放了一个标签,标签上有 labeltext 。现在用户可以通过在UITextView 上写入文本并单击按钮来创建尽可能多的UIView。现在,如果我需要编辑文本,可以在 Tapgesture 上获取文本并将其显示在 UITextView 上,用户可以编辑该文本。

现在,如果用户添加更多文本,那么我需要增加子视图的宽度,点击提交按钮后文本将落在该子视图上。所以我的问题是是否可以在 mainview 中增加子视图宽度。这是我从主视图中获取所有子视图的代码

for (UIView *subview in mainview.subviews)
        {
            if(subview.tag==sender.tag)
            {

                for(UIView *getsusublabel in subview.subviews)
                {

                    if([getsusublabel isKindOfClass:[UILabel class]])
                    {
                        UILabel *subsublabel = (UILabel *)getsusublabel;
                        subsublabel.text=imagelabeltext.text;
                    }

                }
            }
        }

这里 subsublabel 是 subview 上的标签。

【问题讨论】:

  • 你的意思是你想要一个滚动视图?不要使用标签,使用文本视图并更改边框样式和可编辑性...
  • 是的,我想在文本增加时更改子视图的边框样式。

标签: ios iphone objective-c uiview


【解决方案1】:

如果你想根据文字增加标签宽度,试试这段代码sn-p:

//use this for custom font
CGFloat width =  [label.text sizeWithFont:[UIFont fontWithName:@"ChaparralPro-Bold" size:40 ]].width;

//use this for system font 
CGFloat width =  [label.text sizeWithFont:[UIFont systemFontOfSize:40 ]].width;

label.frame = CGRectMake(point.x, point.y, width,height);

//point.x, point.y -> origin for label;
//height -> your label height; 

【讨论】:

    【解决方案2】:

    如果你想用文本改变子视图的大小,那么你可以尝试以下假设你的子视图是一个标签:

    CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font 
                        constrainedToSize:maximumLabelSize 
                        lineBreakMode:yourLabel.lineBreakMode];
    

    您可以相应地在其他子视图上尝试。

    【讨论】:

    • 我如何获得 maximumLabelSize
    • 您必须根据您的要求使用 CGSize 设置 maximumLabelSize,例如:CGSize maximumLabelSize = CGSizeMake(300, 1000);
    • 好的,我现在得到了预期的LabelSize,如何将它放在子视图上。我已经通过 subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | 使子视图自动调整大小UIViewAutoresizingFlexibleHeight;。如何将 expectedLabelSize 放在子视图上。
    • 如果你想根据你的文本调整标签的大小,你可以把expectedLabelSize放在你想要在文本中进行更改的地方,即你输入或更改文本的地方.否则,您可以在文本更改后立即使用委托进行回调。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2015-10-29
    相关资源
    最近更新 更多