我不知道最新情况如何,我试图解决这个问题,我试图满足代码中不同的大小类,以满足使用IBInspectables的一些特殊情况。
在模拟器上,以下代码在iPad,iPhone 4和iPhone 6+上按预期工作。
但是在界面构建器中,只预览任何/任何和常规/常规工作。
这似乎是一个错误? 或者有没有人对可能有效的替代方法有任何建议?
- (void)drawRect:(CGRect)rect {
// Drawing code
CGFloat l_borderWidth = self.AaBorderWidth; // 8.5
CGFloat l_cornerRadius = self.AaCornerRad; // 33
CGFloat l_shadHeight = self.AaShadHeight; // 15.1
CGFloat l_textYOffset = self.AaTextYOffset; // 6.1
if (self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact)
{
if (self.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact)
{
//iphone3.5 / 4 / 4.7 landscape
l_borderWidth = self.CcBorderWidth;
l_cornerRadius = self.CcCornerRad;
l_shadHeight = self.CcShadHeight;
l_textYOffset = self.CcTextYOffset;
}
}
if (self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular)
{
if (self.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular)
{
//ipad landscape
l_borderWidth = self.RrBorderWidth;
l_cornerRadius = self.RrCornerRad;
l_shadHeight = self.RrShadHeight;
l_textYOffset = self.RcTextYOffset;
}
if (self.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact)
{
//iphone6+
l_borderWidth = self.RcBorderWidth;
l_cornerRadius = self.RcCornerRad;
l_shadHeight = self.RcShadHeight;
l_textYOffset = self.RcTextYOffset;
}
}
编辑:我还尝试了以下方法
- (void)layoutSubviews
{
[super layoutSubviews];
[self setSizingClassValues];
}
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
{
[super traitCollectionDidChange:previousTraitCollection];
[self setSizingClassValues];
}
- (void)updateConstraints
{
[self setSizingClassValues];
[super updateConstraints];
}
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
[self setSizingClassValues];
}
return self;
}
- (void)awakeFromNib
{
[super awakeFromNib];
// Run time, loading from xib.
}
- (void)prepareForInterfaceBuilder
{
[super prepareForInterfaceBuilder];
// Design time.
[self setSizingClassValues];
}
答案 0 :(得分:0)
我查看了代码,对我而言,似乎它正在运行代码。你到底想要完成什么?你能描述一下吗?我认为这是Xcode的一个错误。请注意,第一个看起来正确。我明白,如果我不够描述,但你能不能告诉我你想做什么?很抱歉给您带来不便!