标签: size-classes

IOS 7.1,如果目标设备系列设置为iPad,则会忽略通用故事板上的常规宽度限制

我在Xcode 6.1上启动了一个新的单一视图项目,
转到我的目标并将Device Family设置为UniversalDeployment目标为7.1

在故事板中,我在Size类中放置了一个红色标签,Regular Width | Any Height 在Size Class中放置了一个蓝色标签Compact Width | Any Height

根据文档,我在ipad上运行时会看到一个红色标签,在iphone上运行时会看到蓝色,到目前为止,这在模拟器和实际设备上均可正常工作.

现在我回到目标并将Device Family设置为IPad,再次运行应用程序:

  1. 模拟器上的IPad 2(7.1) - 红色标签

  2. IPad 2(7.1)(真实设备) - 蓝色标签?!?!?

  3. IPad 2(8.1)(真实设备) - 红色标签

同样适用于IPad Air/IPad mini以及IOS 7.1的所有其他IPad我都遇到过

基本上我在通用故事板上看到这一点,当在ios 7.1中为IPad设置设备系列时,故事板被认为是紧凑的尺寸.我必须与IOS 7.1兼容,我的应用程序将首先仅针对IPad发布.有没有人知道如何解决它?

编辑

根据Apple文档:对于支持早于iOS 8的iOS版本的应用程序,大多数大小类都是向后兼容的.大小类只要向后兼容即可

  1. 该应用程序使用Xcode版本6或更高版本构建

  2. 该应用程序的部署目标早于iOS 8

  3. 大小类在storyboard或xib中指定

  4. 高度分量的值不紧凑

所有这些都适用于我的例子.

objective-c storyboard ios ios-universal-app size-classes

6
推荐指数
1
解决办法
1030
查看次数

如何在使用不同的大小类时修复wAny hAny的缺失/冲突约束

我想要实现的目标

我想要为所有常规高度垂直排列两个相等高度的视图.但是,对于Compact Heights,我希望水平排列视图.如下图所示:

在此输入图像描述

为此,我在适用于所有内容的wAny-hAny size类中添加了一般约束.然后我为wAny-hRegular和wAny-hCompact大小类添加了特定的约束.这适用于wAny-hRegular和wAny-hCompact(以及在模拟器中测试应用程序),但它让我在wAny-hAny中缺少约束.如果我在wAny-hAny中添加那些缺少的约束,那么我在wAny-hRegular或wAny-hCompact中得到冲突的约束.我不知道如何摆脱错误.

以下是对我所做的更详细的解释.

我是怎么做到的

通过执行以下步骤,我能够在模拟器中获得一些功能.

wAny hAny

在此输入图像描述

对于任何宽度任何高度我设置以下4个约束:

在此输入图像描述

也就是说,我将蓝色固定在顶部和左侧,我将红色固定在右侧和底部.无论使用何种大小类,都始终需要这些约束.

wHny hRegular

在此输入图像描述

对于任何宽度常规高度,我添加了以下4个约束:

在此输入图像描述

也就是说,我将蓝色固定在右侧,红色固定在左侧.我还将红色的上边缘固定在蓝色的下边缘.而我的红色和蓝色相等.这解决了常规高度的所有约束问题.

wAny hCompact

在此输入图像描述

对于任何宽度紧凑高度我添加了以下4个约束:

在此输入图像描述

也就是说,我将蓝色固定在底部,红色固定在顶部.我还将红色的右边缘固定在蓝色的左边缘.我做了红色和蓝色相等的宽度.这解决了Compact Height的所有约束问题.

问题

通过上面的设置,一切都可以在故事板预览中看到(请参见上面的第一张图片),并且在我测试的所有尺寸的模拟器中都能正常工作.

但是,在Interface Builder中,我收到了wAny hAny Size Class的以下Missing Constraint错误:

在此输入图像描述

这有点像catch-22,因为如果我尝试添加缺少的约束,那么我会使用Regular或Compact Size Class约束创建冲突的约束.以Compact为例:

在此输入图像描述

我该如何解决这个问题?

constraints interface-builder ios size-classes

6
推荐指数
1
解决办法
2273
查看次数

使用UIStackView的轴和实际设备时,Size Class紧凑高度无法正常工作

这就是我的故事板和预览中的样子:

在此输入图像描述

这就是我在故事板中为此设置的内容UIStackView:

在此输入图像描述

但是当我在真实设备上运行时,一切都会改变:

在此输入图像描述

为什么会这样?

请注意我这里有两个UIStackViews:带标签的图标框,两个按钮.第二个正常工作,但不是第一个.为什么?它以完全相同的方式完成.两个直接的子视图UIStackView

编辑

我意识到出现的问题UIImageView作为直接子视图UIStackView.

xcode ios size-classes

6
推荐指数
1
解决办法
266
查看次数

Xcode 8 Vary Traits有自动布局问题

好吧,我终于使用Xcode 8进入autolayout了.

我可能在概念上有错误的想法.但是我在IB中有一个视图,在视图中有2个标签,一个按钮和一个imageview死点,尺寸为300 x 300,用于6plus和6个设备.

在此输入图像描述

我想要做的是改变iPhone 5(SE)的图像视图大小,所以我点击Vary for Traits并选择高度和宽度,然后将值更改为150 x 150点击完成,所有看起来都很好看iphone 5(SE).

在此输入图像描述

在此输入图像描述

现在点击返回6plus和6它也调整为150 x 150,但我希望图像大小保持为300 x 300.再次,我可能完全有错误的想法.

我认为这一点的重点在于它的大小取决于所选择的内容,即变化.

iphone ios autolayout size-classes xcode8

6
推荐指数
1
解决办法
943
查看次数

使用loadNibNamed和Size Classes获取约束

我正在使用Autolayout和Size Classes从xib加载视图.在该视图中,有一个子视图,viewWithSizeClasses其高度受约束,取决于大小等级.

我想要做的是立即加载约束loadNibNamed,以便根据当前的Size Class获得适当的高度.

我尝试了各种组合layoutSubviews(),updateConstraints()但无论我做什么,我总是得到默认的Any,Any height.

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    let xibView = NSBundle.mainBundle().loadNibNamed("View", owner: self, options: nil).first as View

    self.view.addSubview(xibView)
    height = xibView.viewWithSizeClasses.frame.size.height // <- Any, Any height
}
Run Code Online (Sandbox Code Playgroud)

我正在iOS8或更新版本上部署.

xib ios autolayout ios8 size-classes

5
推荐指数
1
解决办法
360
查看次数

UITextView字体大小类不会更改

我尝试在storyboard中设置UITextView的字体大小类,但它总是显示系统字体(默认字体,大小和颜色).如果我没有设置字体大小类,它会显示正确的字体.

这是一个截图:

有谁知道如何解决这个问题?

uitextview ios size-classes

5
推荐指数
1
解决办法
2450
查看次数

iPad的自适应布局

我正在关注这篇文章,以便在ios 构建适用于iOS 8的自适应用户界面中构建自适应布局 .

它可以在iPhone上正常工作.现在我不想在iPad上给出同样的效果.但对于iPad自适应布局是行不通的.
这是iPhone5中应用程序的屏幕截图 (绿色框表示view1,黄色框表示view2)
1.Portrait模式

在此输入图像描述

  1. 景观模式
    在此输入图像描述

问题:如何才能为iPad实现同样的效果?
扩展问题:如何在横向模式下设置iPad的初始方向?

ipad ios autolayout swift size-classes

5
推荐指数
1
解决办法
557
查看次数

以编程方式使用大小类设置字体大小

有一些关于这个的帖子,但似乎没有一个完整的解决方案。

通过 IB 使用自适应布局我可以轻松更改特定大小类的字体大小,但是我有一个使用 UILabels 的自定义视图,我想根据使用的大小类(使用 swift)以编程方式设置字体大小 - 有没有其他人有这个问题或遇到解决方案?

ios swift size-classes adaptive-layout

5
推荐指数
1
解决办法
2797
查看次数

在 iPhone plus 设备上点击横向媒体选择按钮时 AVPlayerViewController 崩溃

标题几乎描述了所有内容,但这里有详细说明......要在我的应用程序中播放视频,我正在使用 AVPlayerViewController 以模态方式呈现

let player = AVPlayer.init(url: url)
let playerViewController = AVPlayerViewController.init()
playerViewController.player = player
parentViewController.present(playerViewController, animated: true, completion: {...})
Run Code Online (Sandbox Code Playgroud)

一切正常,视频全屏播放,我可以将设备旋转到横向和纵向……仍然一切顺利。

当我点击右下角的对话气泡以更改音频或字幕设置时,这种 UIAlertController 以纵向模式显示(iPhone 7 加纵向): 纵向音频和字幕设置

在横向模式下点击相同的按钮时,它看起来像这样(基本相同,但会以纵向显示,iPhone 7 横向): 从横向启动但以纵向显示的音频和字幕设置

在横向的 iPad Air 2 上执行相同操作如下所示: iPad 横向音频和字幕设置

现在是实际问题:在横向模式下在 6/6s/7 PLUS 设备上播放电影并点击对话气泡时,应用程序崩溃!这是出现在调试器输出和堆栈跟踪中的内容:

2017-08-10 12:08:18.683184+0200 MyApp[27739:6396143] [Assert] transitionViewForCurrentTransition 未设置!(<_UIFullscreenPresentationController: 0x7ffe3e586000>) 堆栈跟踪

对我来说,它看起来像一个 Apple 错误,因为我在这里没有做任何特别的事情(至少我是这么认为的)并且因为崩溃仅在使用 plus 设备时显示,这是唯一具有紧凑和常规尺寸类组合的设备.

有人知道这里发生了什么吗?

crash landscape ios size-classes avplayerviewcontroller

5
推荐指数
1
解决办法
805
查看次数

尺寸等级中的色域究竟是什么?

当您想向属性添加变体时,您会看到此弹出窗口(我使用的是 Xcode 8):

在此处输入图片说明

据我了解,这里的色域设置是针对显示类型的。但我不明白它的真正含义以及何时应该使用它?

xcode ios size-classes xcode8

5
推荐指数
1
解决办法
799
查看次数