【问题标题】:Size classes on Modal Views模态视图上的尺寸等级
【发布时间】:2016-11-17 19:47:32
【问题描述】:

我正在尝试为 iPad 和 iPhone (4'') 设置不同的约束。

我为 iPhone 设置了常规高度和紧凑宽度限制。但这些限制在 7.9 英寸 iPad、9.7 英寸 iPad 上显示。

这些约束适用于模态视图。

如何使我的常规高度和紧凑宽度限制仅限于我的 iPhone。

【问题讨论】:

    标签: iphone ipad modalviewcontroller size-classes adaptive-layout


    【解决方案1】:

    请注意,iOS Docs 对traitCollection 有此警告:

    直接使用 traitCollection 属性。不要覆盖它。不要提供自定义实现。

    知道了,这里有一个 Obj-C 解决方案,它结合了 super 特征和更新的水平/垂直特征:

    - (UITraitCollection *)traitCollection {
        UITraitCollection *traitCollection = [super traitCollection];
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            UITraitCollection *horizontalTraitCollection = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
            UITraitCollection *verticalTraitCollection = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];
            traitCollection = [UITraitCollection traitCollectionWithTraitsFromCollections:@[traitCollection, horizontalTraitCollection, verticalTraitCollection]];
        }
        return traitCollection;
    }
    

    【讨论】:

      【解决方案2】:

      由于 iPad 上的表单呈现是紧凑的宽度和常规的高度,它正在接受这些限制。

      Formsheet ios 8 constraints are same as iphones constraints

      解决方案是在 Presented 视图控制器中覆盖 traitCollection

      override var traitCollection: UITraitCollection
      {
          if UIDevice.isIPad()
          {
              let traits = UITraitCollection(horizontalSizeClass: UIUserInterfaceSizeClass.Regular)
              let traits2 = UITraitCollection(verticalSizeClass: UIUserInterfaceSizeClass.Regular)
              let traitCollection = UITraitCollection(traitsFromCollections: [traits, traits2])
      
              return traitCollection
          }
          else
          {
              return super.traitCollection
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-04-05
        • 1970-01-01
        • 2021-12-14
        • 2015-12-10
        • 1970-01-01
        • 1970-01-01
        • 2018-10-06
        • 1970-01-01
        • 2020-11-04
        相关资源
        最近更新 更多