加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iOS,界面构建器错误与调整类和IBInspectables?

发布时间:2020-12-14 17:18:49 所属栏目:百科 来源:网络整理
导读:我不知道发生了什么事,我正在努力解决这个问题,我正在尝试为代码中的不同大小调整类来满足使用IBInspectables的一些特殊情况. 在模拟器上,以下代码在iPad,iPhone 4和iPhone 6上按预期工作. 但是在界面构建器中,只预览任何/任何和常规/常规工作. 这好像是个bu
我不知道发生了什么事,我正在努力解决这个问题,我正在尝试为代码中的不同大小调整类来满足使用IBInspectables的一些特殊情况.

在模拟器上,以下代码在iPad,iPhone 4和iPhone 6上按预期工作.

但是在界面构建器中,只预览任何/任何和常规/常规工作.

这好像是个bug?
或者有没有人对可能有效的替代方法有任何建议?

- (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];
}

解决方法

我查看了代码,对我而言,似乎它正在运行代码.你到底想要完成什么?你能描述一下吗?我认为这是Xcode的一个错误.请注意,第一个看起来正确.我明白,如果我不够描述,但你能不能告诉我你想做什么?抱歉给你带来不便!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读