Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果内容没有';不符合视图';第一行_Ios_Objective C_Swift_Autolayout_Ios Autolayout - Fatal编程技术网

Ios 如果内容没有';不符合视图';第一行

Ios 如果内容没有';不符合视图';第一行,ios,objective-c,swift,autolayout,ios-autolayout,Ios,Objective C,Swift,Autolayout,Ios Autolayout,描述我的处境最好的方法是用图像。我拥有的是一个视图,其中包含几个UILabels和UIImage。红色框是一个ui标签,如果内容太大,则应转到第二行 从故事板上看,当内容合适时,我有一个工作案例,但问题是,我不确定当最后一个(红色框)应该转到第二行时,如何处理该案例。我正在使用自动布局和制图 如果有人能给我指出正确的方向,我将非常感激 使用标记视图可以解决此问题。TagListView是一个外部库。 当您将视图添加为taglistView的子类时,其高度会相应地自动增加 将此添加到pod文件:

描述我的处境最好的方法是用图像。我拥有的是一个视图,其中包含几个
UILabel
s和
UIImage
。红色框是一个
ui标签
,如果内容太大,则应转到第二行

从故事板上看,当内容合适时,我有一个工作案例,但问题是,我不确定当最后一个(红色框)应该转到第二行时,如何处理该案例。我正在使用
自动布局
制图

如果有人能给我指出正确的方向,我将非常感激


使用标记视图可以解决此问题。TagListView是一个外部库。 当您将视图添加为taglistView的子类时,其高度会相应地自动增加

将此添加到pod文件:pod“TagListView”

func addTags() {
        let str1 = "Hi"
        tagListView.addTag(str1)
        let str2 = "Helloo"
            tagListView.addTag(str2)
        let str3 = "How Are u ? "
        tagListView.addTag(str2)
        tagListView.isUserInteractionEnabled = false
    }

仅使用约束无法做到这一点。要更改元素在屏幕上的整个位置,您需要以编程方式进行更改。

首先根据当前标签的位置计算文本的宽度

如果文本宽度大于当前标签的宽度,请从以下链接查看我的答案:

计算宽度:

func widthForView1(_ text:String, font:UIFont, height:CGFloat) -> CGFloat
{

let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: your_label_width, height: your_lable_height))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.text = text
label.font = font
label.sizeToFit()
return label.frame.width
}

是否要在单个标签中生成两行文字?如果是这样,则可以通过设置numberOfLine=0来实现。这就是您需要的吗?使用约束大于等于并引用this@Janmenjaya不,我不想那样。如果ti太大,我只想把整个标签移到第二行。如果你想让标签从原来的位置开始,并将扩展到第二行,请按照Himanshu的回答。或者将你的约束连接为出口,自己管理,使约束更大。不,这不是一个解决方案。如果UILabel是父视图中的唯一视图就可以了。我不确定你的确切意思。你能再给我一些信息吗?没关系。但我想知道什么是最好的、正确的、简单的方法。仅逻辑逻辑逻辑如下1。将标签放在第1行(例如在情节提要中)2上。将标签的文本设置为3。考虑它的大小(它适合还是应该被替换?)4。如果大小==确定->保持原样->替换标签,则可能需要将某些约束存储为属性(例如标签的顶部约束和Line2视图的顶部约束)我接受了你的答案,我设法用这种方式来做,但是如何正确地检查uilabel右角是否超过父宽度?宽度总是相同的。我在sizeToFit()之后打印宽度,无论我把什么作为字符串,它总是一样的。我指的是label.frame.size.width.calling layoutSubViews()中的值,在此之前修复问题let label:UILabel=UILabel(frame:CGRect(x:0,y:0,width:CGFloat.greatestfinitemagnity,height:height))试试这个。。