【问题标题】:How to know the current size classes and if my button is displayed?如何知道当前的尺寸等级以及我的按钮是否显示?
【发布时间】:2015-03-13 05:00:41
【问题描述】:

我在我的项目中使用尺寸等级。

我有一个按钮,它只显示给

  • 紧凑的宽度和紧凑的高度
  • 紧凑的宽度和常规的高度

其他尺码等级不显示此按钮。

在这个按钮上我应用了一个特定的效果。但我只需要对我的 2 个尺码类别应用此效果。

类似:

if button is available for the current size classe
    apply the effect

可以实现吗?

【问题讨论】:

  • 我最初发布了一个答案,说在当前尺寸类中不可见的要查看的网点将是nil,但我完全错了。我刚刚编写了一个测试应用程序,其视图包含 9 个 UILabel,并为每个 UILabel 分配了仅安装特定大小类的应用程序。在运行时,我打印出哪些出口是非零的,无论大小类是什么,它们都不是零。 – NRitH 40 秒前编辑

标签: ios storyboard autolayout ios-universal-app size-classes


【解决方案1】:

要跟进我现在已删除的先前答案和后续评论,Apple's docs state

仍会创建已卸载视图的运行时对象。但是,视图和任何相关约束都不会添加到视图层次结构中,并且视图具有 nil 的超级视图属性。这与隐藏不同。隐藏视图与任何相关约束一样位于视图层次结构中。

换句话说,唯一知道的方法是检查出口视图的父视图是否为nil

【讨论】:

    【解决方案2】:

    在 ViewWillApper() 期间检查你的视图控制器的 traitCollection。

    myViewController: UIViewController{
    
        mybutton = UIButton(frame: myframe)
    
        func viewWillAppear(){
    
            if traitCollection.horizontalSizeClass == .Compact {
                applyAwesomeEffect(myButton)
            }
        }
    }
    

    【讨论】:

    • 它的工作原理谢谢!我只是使用尺寸等级难以区分纵向 iPad 和横向 iPad。
    • iPad 在两个方向上都是“常规高度”和“常规宽度”。
    • 我确实知道。这是一个不同的问题,有人已经问过这个问题:stackoverflow.com/questions/27700440/…,但没有人回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    相关资源
    最近更新 更多