请教个autolayout中的NSDictionaryOfVariableBindings宏问题
1个回答
展开全部
NSDictionary *dictViews = NSDictionaryOfVariableBindings(self.txt1); 使用这个 输出的字典格式应该是:@{@“self.txt1”:“self.txt1”};
而你用NSDictionary *dictViews = @{ @"txt1":self.txt1 };之所以不会错误,原因在于你使用的VFL格式中的txt1.
NSArray *consArray1 = [NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-10-[txt1]-10-|" options:0 metrics:nil
views:dictViews];
NSArray *consArray2 = [NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-50-[txt1]" options:0 metrics:nil
views:dictViews];
这个txt1,能够在dictViews字典中找到key.(txt1)。二不能找到key(self.txt1)。因为VFL中
是通过key来寻找对应的value。例如,假设你有一个self.label。你如果像这样实例化字典:NSDictionary
*dicViews = @{@"txt1":self.label};它会布局self.label而不是self.txt1。记住 VFL
你看到的变量是key.而不是value。简单理解。就是看你key对应的value是什么。
而你用NSDictionary *dictViews = @{ @"txt1":self.txt1 };之所以不会错误,原因在于你使用的VFL格式中的txt1.
NSArray *consArray1 = [NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-10-[txt1]-10-|" options:0 metrics:nil
views:dictViews];
NSArray *consArray2 = [NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-50-[txt1]" options:0 metrics:nil
views:dictViews];
这个txt1,能够在dictViews字典中找到key.(txt1)。二不能找到key(self.txt1)。因为VFL中
是通过key来寻找对应的value。例如,假设你有一个self.label。你如果像这样实例化字典:NSDictionary
*dicViews = @{@"txt1":self.label};它会布局self.label而不是self.txt1。记住 VFL
你看到的变量是key.而不是value。简单理解。就是看你key对应的value是什么。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询