标签: size-classes

带有autolayout的iOS8 UITableView在单元格上方有一个空格

我使用autolayout在故事板中创建了一个UIViewController,它有一个嵌入式UITableView.由于某种原因,桌面视图部分上方有空白区域.我的期望是tableview会将所有可用空间分成单元格,并从顶部开始单元格.

在使用自动布局和大小类时,是什么导致表视图在第一个部分上方添加空格?

(见下面的截图,"电视"下方的空白区域和"原型单元格"上方的问题) 在此输入图像描述

我已经检查了约束和插入,并且看不出它们有什么问题: 在此输入图像描述

更新:这是场景层次结构 在此输入图像描述

objective-c uitableview autolayout ios8 size-classes

4
推荐指数
1
解决办法
871
查看次数

为iPhone 6和iPhone 6 plus更改纵向模式的尺寸

大小等级:

紧凑宽度任何高度适合所有紧凑宽度布局(除iPhone 6以外的所有手机)

紧凑的宽度常规高度适用于potrait中的所有iphone

横向所有iphone的任何宽度紧凑高度(iphone 6 plus除外)

常规宽度紧凑高度(适用于iPhone 6 plus)iphone 6 plus横向

现在我有了标签,我改变了iPhone 6和iPhone 6的字体大小,例如"紧凑宽度任何高度","12"和"紧凑宽度常规高度",它的"15"纵向.所有iPhone的纵向尺寸均为15.

但是当我将"任何宽度紧凑高度"的字体大小更改为"12"并将"常规宽度紧凑高度"更改为"15"时,它可以正常工作.

我的问题是我应该如何为肖像做同样的事情?

iphone landscape-portrait ios8 size-classes

4
推荐指数
1
解决办法
397
查看次数

区分iPad方向与尺寸等级

iOS 8 Apple引入了用于处理应用程序布局的大小类.不是根据设备,屏幕大小和方向设计用户界面,而是鼓励开发人员根据活动大小类调整其应用程序的布局.我认为这是一个很好的举动.

然而,当涉及到iPad时,似乎没有办法区分不同的设备方向(在我看来,它提供了截然不同的屏幕空间和处理).从人机界面指南: iPad尺寸等级 如果我只想以横向方式呈现侧边菜单,我现在该怎么办,因为它提供了更多的空间,比如UISplitViewController

UISplitViewController另一种情况下苹果也不吃它自己的狗食和使用了一些其他指标,如设备的方向或实际屏幕宽度来确定布局?或者还有另一种官方方式吗?在没有代码的情况下,我可以在Interface Builder中做些什么?

(不,我不想UISplitViewController因为几个原因而使用.)

layout ipad ios ios8 size-classes

4
推荐指数
1
解决办法
1342
查看次数

SwiftUI:通用(macOS 和 iOS)视图的 UserInterfaceSizeClass

尝试在macOS(本机,而不是 Catalyst)上引用@Environment对象会导致以下错误:horizontalSizeClassverticalSizeClass

“horizo​​ntalSizeClass”在 macOS 中不可用

“verticalSizeClass”在 macOS 中不可用

我知道这些属性并不真正适用于 macOS,但这对创建通用的 SwiftUI 视图(即跨 macOS、iOS 等跨平台)构成了很大的障碍。

一种解决方法是将所有特定于大小类的代码包装在条件编译内,但结果是大量重复和冗余(请参见下面的示例)。

难道就没有更有效的方法来处理这个问题吗?

通用视图示例:

struct ExampleView: View {

    #if !os(macOS)
    @Environment(\.horizontalSizeClass) var horizontalSizeClass
    #endif

    private var item1: some View {
        Text("Example Item 1")
    }
    private var item2: some View {
        Text("Example Item 2")
    }
    private var item3: some View {
        Text("Example Item 3")
    }

    var body: some View {
        VStack {
            #if !os(macOS)
            if horizontalSizeClass == .compact {
                VStack {
                    item1
                    item2
                    item3 …
Run Code Online (Sandbox Code Playgroud)

macos cross-platform ios size-classes swiftui

4
推荐指数
1
解决办法
1877
查看次数

如何知道当前的大小类以及我的按钮是否显示?

我在我的项目中使用了大小等级.

我有一个按钮,只显示

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

其他尺寸类不显示此按钮.

在这个按钮上我应用了一个特定的效果.但我只需要为我的2个尺寸类应用此效果.

就像是 :

if button is available for the current size classe
    apply the effect
Run Code Online (Sandbox Code Playgroud)

有可能实施吗?

storyboard ios ios-universal-app autolayout size-classes

3
推荐指数
1
解决办法
605
查看次数

3
推荐指数
1
解决办法
900
查看次数

调整专为Iphone 6设计的应用程序,以便在iphone 5s中正确缩放

好的,这是我设计的iphone 6屏幕应用程序没有大小类和自动布局的问题.在故事板中看起来如下.如您所见,它的模拟尺寸为4.7英寸. 在此输入图像描述

它非常适合在iphone 6设备上运行时.然而,当尝试在除iPhone 6之外的其他设备中运行应用程序时,它不会按比例缩放.

我的希望是,如果我删除了只保留iphone 6大小的蓝图屏幕图像,它将缩放以适应其他屏幕,就像它在iphone 6上运行一样,只是按比例放大或缩小设备.

我的启动屏幕现在看起来像这样

在此输入图像描述

它实际上扩展了应用程序,但它以错误的比例缩放应用程序,使它看起来像这样切碎.

Iphone 5s版本的应用程序看起来像这样 在此输入图像描述 正如您所看到的那样,它可以正确缩放,但与正确缩放的iphone 6版本相比,方面会出错. 在此输入图像描述

这是一个看起来像iphone 5s版本缩放错误的ipad版本. 在此输入图像描述

在我看来缩放工作,因为我删除了除4.7显示器之外的所有发射图像(iphone 6)然而问题似乎是它保持iphone 5宽度的宽度使得iphone 6显示器变宽.

我试图为所有设备添加启动图像,但问题是我需要使用autolayout和size类来使其工作.

有没有办法告诉缩放保持方面,但使用iphone 6宽度和高度完整,而不使用大小类等.

使问题更简单.有没有办法扩展为严格的iPhone 6制作的应用程序,所以调整大小到iPhone 5s/iPad?

任何帮助都非常感谢!

xcode objective-c ios swift size-classes

3
推荐指数
1
解决办法
7915
查看次数

强制视图上的特定大小类

我有一个视图,需要iPad和iPhone版本之间的不同约束.

登录屏幕在iPhone上以及在iPad上的页面表中以全屏显示.由于尺寸的原因,UITextFields距离iPhone的右侧和左侧40像素,但我希望它们在iPad上为80像素.我将其设置为最终值大小类(w Regular,h Regular)的特定约束.

但是,因为此视图显示在页面表上,所以它不使用最终值大小类.理想情况下,我想"强制"视图使用大小类,而不是拥有一组iPhone/iPad约束和许多约束Outlets.

objective-c ios autolayout nslayoutconstraint size-classes

3
推荐指数
1
解决办法
2853
查看次数

AutoLayout Size Classes - 不同的比例高度

我需要将子视图的高度设置为与其父视图成比例.在iPad上,我需要它是高度的三分之一,而在iPhone上我需要它是一半.在"AnyAny"大小类中,我创建约束并将乘数设置为0.3333333.这样做可以在iPad上实现.当我将size类更改为"CompactRegular"时,我将约束的乘数更改为0.5.虽然这使它在iPhone上占了一半,但它也适用于iPad.如何使尺寸类具有不同的乘数?

iphone ipad ios autolayout size-classes

3
推荐指数
1
解决办法
850
查看次数

更改代码中的大小类(快速)

我一直在尝试以纯代码(不使用情节提要)构建自适应布局并开始运行。我使用布局锚来设置约束,并利用traitCollectionDidChange方法在各种约束集和其他接口更改之间进行切换。我使用switch语句使用相应的约束集调用相应的方法。

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)

    switch (traitCollection.horizontalSizeClass, traitCollection.verticalSizeClass) {
    case (.regular, .regular):
        setupRegularRegular()

    case (.compact, .compact):
        setupCompactCompact()

    case (.regular, .compact):
        setupRegularCompact()

    case (.compact, .regular):
        setupCompactRegular()

    default: break
    }

}
Run Code Online (Sandbox Code Playgroud)

为了进行测试,我仅更改了一个约束,即centerYAnchor.constraint。在纵向模式中,常量为-150,在横向模式中,我希望将其更改为50。对于iPad,我将常量设置为0。

bigLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: -150).isActive = true
Run Code Online (Sandbox Code Playgroud)

在iPhone和iPad之间切换时,效果很好。但是,如果您开始将iPhone从纵向旋转到横向,则布局系统将失败,并显示:

[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. 
Try this: 
    (1) look at each constraint and try to figure out which you don't expect; 
    (2) find …
Run Code Online (Sandbox Code Playgroud)

ios swift size-classes adaptive-layout programmatically

3
推荐指数
1
解决办法
2546
查看次数