2015-09-06 23 views
1

我想設置一個簡單的UITableViewCell,其中有一個提示在左邊,然後在它旁邊的文本字段,它佔據了其餘的細胞的寬度;但是,有了以下限制,無論我將UITextField的寬度設置爲何,該字段的寬度僅適用於1個字符。注意:UITextField出現在正確的位置(它直接在提示的右邊),它只是非常小。已工作自動佈局:空UITextField只有足夠的1個字符

cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[prompt]-[uitextfield]", options: NSLayoutFormatOptions.AlignAllCenterY, metrics: nil, views: views)) 
cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[promt]-|", options: nil, metrics: nil, views: views)) 
cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[uitextfield]-|", options: nil, metrics: nil, views: views)) 

一種解決方案是的UITextField的寬度設置爲一個高的離譜號碼:

cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[prompt]-[uitextfield(1000)]", options: NSLayoutFormatOptions.AlignAllCenterY, metrics: nil, views: views)) 

因爲有時的UITextField是一個UISegmentedControl我不能然而使用這種溶液(或其他控制),我不想將這些控件拉伸出來。

爲什麼UITextField強制其寬度非常小,即使我明確地將frame.size.width設置爲大一些?

回答

1

沿着橫軸的UITextField的內容擁抱優先級應低於您的提示元素的內容擁抱優先級。

您可以通過做yourTextField.contentHuggingPriorityForAxis(.Horizontal)查看擁抱優先級的內容。並使用yourTextField.setContentHuggingPriority(250, forAxis: .Horizontal)進行設置。你也可以在界面生成器(我更喜歡)中做到這一點。

嘗試文本字段的內容擁抱優先級設置爲250,並設置提示對251

+0

根據你的回答,我找到了一個解決方案:1)我把uitextfield的擁抱優先級改成小於250(所有內容擁抱優先級爲250:contentView,uitextfield&prompt)2)改變,uitextfield仍然只有1個字符寬(注意:我沒有在我的問題中提到這一點,但uitextfield出現在提示旁邊的正確位置,它非常小)。是什麼讓uitextfield擴展到了將它釘在它的超級視圖的右側:「H:| - [text] - [control] - |」 – JoeyBartez

+0

太棒了!很高興你自己得到了答案。 :) 隊友的歡呼聲! –

0

解決方案:
1)引腳給出UITextField到它的父
2)的右邊緣更改的擁抱優先UITextField小於250

有人可以解釋爲什麼這個工程?爲什麼不能僅僅執行第一步?或者,如果您只執行第1步,爲什麼不提示& uitextfield同樣展開以填充超視圖中的額外寬度?

相關問題