希望这只是一个简单的设置问题。
我无法在IB中输入带有小数点的约束值。每当我输入一个带有小数点的值并按回车键时,系统就会四舍五入它!
在代码中创建约束时,我没有这个问题。只会在IB中出现。
有什么办法吗?
希望这只是一个简单的设置问题。
我无法在IB中输入带有小数点的约束值。每当我输入一个带有小数点的值并按回车键时,系统就会四舍五入它!
在代码中创建约束时,我没有这个问题。只会在IB中出现。
有什么办法吗?
我认为这需要通过编程来完成。从Xcode 6.3开始,在故事板编辑器中,约束常量值似乎仅限于整数(而不像乘数值可以是小数点后面的数字)。
对于谷歌搜索者,以下是实现方法:
要在故事板中指定约束的小数值,您可以设置约束iVar的常量属性。以下是将高度约束设置为0.5f的示例:
在您的头文件中:
@property (nonatomic, retain) IBOutlet NSLayoutConstraint *separatorHeightConstraint;
-(void)layoutSubviews {
[super layoutSubviews];
self.separatorHeightConstraint.constant = 0.5f;
}
这就是全部内容!
constraint.constant=value;
一次,然后调用[self.view setNeedsLayout];
,让布局系统自己完成它的任务。为什么要在每个布局周期都重新设置值呢? - Alejandro IvánsetNeedsLayout
)会导致约束在再次调用layoutSubviews
之前被四舍五入为1.0f。最近我没有尝试过这个方法,因为现在可以在Storyboard中设置小于1.0f的分数约束而不会出现任何问题。 - adamupconstant
类型:Number
值:0.5
#import <UIKit/UIKit.h>
@interface OnePixelWidthConstraint : NSLayoutConstraint
@end
OnePixelWidthConstraint.m:
#import "OnePixelWidthConstraint.h"
@implementation OnePixelWidthConstraint
- (CGFloat)constant {
return 1./[UIScreen mainScreen].scale;
}
@end
仅计算一次值:
- (CGFloat)constant {
static CGFloat onePixel = 0;
return onePixel?:(onePixel = 1./[UIScreen mainScreen].scale);
}
- (void)updateConstraints {
self.separatorHeightConstraint.constant = 0.5f;
[super updateConstraints];
}
在所需的十进制值前加上 0。
例如:0.9,而不是 .9