a)有2个文本字段,最小宽度为90
b)我希望文本字段始终保持10之间的间隙
c)我希望输入的文本字段根据需要变大,然后开始占用右边的空白区域.如果第一个字段是类型,它应该变大并将最后一个字段推入空间(当然只增加第一个字段的宽度)
d)我希望文本字段在靠近视图的右边缘后停止增长(标准20像素)
e)高度限制很简单:只需22px,顶部与图片顶部对齐
这是我想要的布局:
以下是约束:
我已经尝试了所有的东西,但我无法让它发挥作用.当你输入时,我可以让一个文本字段正确增加(使用此链接中的答案:getting a NSTextField to grow with the text in auto layout?),但无法使其与旁边的第二个文本字段一起使用,将其推入占据空白区域.我已经玩过内容拥抱/压缩阻力优先级,给文本字段> = 90宽度(右边有一个引脚)…似乎没有在IB中正确设置(使用Xcode 5.1).如果我添加宽度约束,或者抱怨没有宽度的缺失约束,它会抱怨约束歧义.
任何想法如何让这个工作?
编辑:
这就是我想象的理想布局:约束小于400钉在右边.但它仍然抱怨“不平等约束模糊”.
解决方法 这已经差不多一年了,但我认为这是一个非常好的问题值得回答,所以我着手解决你的问题并设法以一种非常简单的方式解决它.您可以通过单击here在Github中找到示例项目.
不用考虑,我是用UIKit做的,所以我希望你在Desktop Framework中有相同的API.
首先,我设置这样的约束:
firstTextFIEld: { Leading = 20pt (to superVIEw),WIDth >= 90pt,Trailing = 10pt (to secondTextFIEld),Vertical Align Y (to superVIEw)}secontTextFIEld: { Leading = 10pt (to firstTextFIEld),Trailing = 20pt (to superVIEw),Vertical Align Y (to superVIEw)}
这就是界面.现在,在代码中,您需要第一个文本字段的出口,以及文本更改时的回调方法.然后,在此方法中,您必须使firstTextFIEld的instrinsicContentSize无效:
@interface VIEwController () <UITextFIEldDelegate>@property (weak,nonatomic) IBOutlet UITextFIEld *firstTextFIEld;@end@implementation VIEwController- (voID)vIEwDIDLoad{ [super vIEwDIDLoad]; [self.firstTextFIEld addTarget:self action:@selector(textFIEldDIDChange) forControlEvents:UIControlEventEditingChanged];}- (voID)textFIEldDIDChange{ [self.firstTextFIEld invalIDateIntrinsicContentSize];}@end总结
以上是内存溢出为你收集整理的cocoa – 具有自动布局的NSTextFields;打字成长为太空全部内容,希望文章能够帮你解决cocoa – 具有自动布局的NSTextFields;打字成长为太空所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)