首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IBDesignable呈现NSLayoutConstraint子类

IBDesignable呈现NSLayoutConstraint子类
EN

Stack Overflow用户
提问于 2017-01-30 01:09:28
回答 1查看 774关注 0票数 3

我已经开发了一个DeviceLayoutenter link description here

此库提供DeviceLayoutConstraint以设置每个设备大小的AutoLayout常量

代码语言:javascript
复制
import UIKit

import Device
class DeviceLayoutConstraint: NSLayoutConstraint {

    @IBInspectable var inch3_5: CGFloat = 0.0 { didSet { updateConstant(size: .screen3_5Inch, constant: inch3_5)}}
    @IBInspectable var inch4: CGFloat = 0.0 { didSet { updateConstant(size: .screen4Inch, constant: inch4)}}
    @IBInspectable var inch4_7: CGFloat = 0.0 { didSet { updateConstant(size: .screen4_7Inch, constant: inch4_7)}}
    @IBInspectable var inch5_5: CGFloat = 0.0 { didSet { updateConstant(size: .screen5_5Inch, constant: inch5_5)}}
    @IBInspectable var inch7_9: CGFloat = 0.0 { didSet { updateConstant(size: .screen7_9Inch, constant: inch7_9)}}
    @IBInspectable var inch9_7: CGFloat = 0.0 { didSet { updateConstant(size: .screen9_7Inch, constant: inch9_7)}}
    @IBInspectable var inch12_9: CGFloat = 0.0 { didSet { updateConstant(size: .screen12_9Inch, constant: inch12_9)}}

    fileprivate func updateConstant(size: Size, constant: CGFloat) {
        if size == deviceSize() {
            self.constant = constant
            layoutIfNeeded()
        }
    }

    open func deviceSize() -> Size {
        return Device.deviceSize
    }

    open func layoutIfNeeded() {
        self.firstItem.layoutIfNeeded()
        self.secondItem?.layoutIfNeeded()
    }
}

fileprivate extension Device {
    static let deviceSize = Device.size()
}

在运行时模拟器或设备中应用的每设备常量属性

我的问题是

在选择设备时,是否可以使用IBInspectable或IBDesignable进行更新渲染?

我想在设备类型更改时检查Storyboard或Xib文件中的渲染

EN

回答 1

Stack Overflow用户

发布于 2017-01-30 02:57:18

是的,约束(无论是您的子类还是标准约束)与designable视图完全兼容。显然,它要求您的@IBDesignable视图正确处理大小的变化,但我们通常会这样做。

例如,如果您有一个添加圆形CAShapeLayer的designable视图,则只需在适当的init方法中添加一次CAShapeLayer,但在layoutSubviews方法中更新该层的path。例如,请参见CircleView

但是,如果您正确处理大小布局更改,则也会自动适当地处理约束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41923615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档