标签: ios-autolayout

使用autolayout将屏幕分为1/3和2/3视图

有没有办法按百分比划分屏幕(不等于百分比)我需要将屏幕分成两部分1/3和2/3.我知道如何分成相等的部分,但无法弄清楚如何分裂为不相等.

谢谢

ios swift ios-autolayout

33
推荐指数
3
解决办法
2万
查看次数

如何使用autolayout获得真正大小的UIView

我是一名新开发者iOS.

我使用自动布局.

我有个问题.在约束之后,我无法获得UIView的实际大小.

例如,当我想获得UIView带约束的大小时

self.container.frame.size.height
Run Code Online (Sandbox Code Playgroud)

对于所有设备尺寸,它总是返回550.但是当我在差异设备上运行它时,我可以看到它有不同的大小.

谢谢

ios autolayout ios-autolayout

29
推荐指数
6
解决办法
3万
查看次数

Xcode 7添加尾随/前导/上/下限制

在Xcode 6中,我可以使用Editor菜单来固定:

  • 超级视野的领先空间
  • Superview的尾随空间
  • Superview的顶级空间
  • 超级视图的底部空间

我无法在Xcode 7 beta中找到这样做的方法.如果我按下Storyboard视图中的Align按钮,我会看到:

  • 领先的边缘
  • 尾边
  • 顶边
  • 底边

我认为是同样的事情,但他们都是灰色的.

在Xcode 6中添加这4个约束大概需要20秒,但我花了30分钟把它放在Xcode 7中并且无法弄明白.

autolayout ios-autolayout xcode7

29
推荐指数
2
解决办法
3万
查看次数

为什么弱IBOutlet NSLayoutConstraint在我使其无效时变为nil?

我的IBOutlet NSLayoutConstraint应用程序中有一个.非常简单:

@property (nonatomic, weak) IBOutlet NSLayoutConstraint* leftConstraint;
Run Code Online (Sandbox Code Playgroud)

在某些时候,我想停用此约束:

self.leftConstraint.active = NO;
Run Code Online (Sandbox Code Playgroud)

它发生在一个名为from的方法中cellForRowAtIndexPath:.并且约束在上面的行之后变为零.但是,如果我声明这个属性,strong那么它没关系,它不会变为零.任何人都能解释为什么会这样吗?

objective-c uikit iboutlet ios ios-autolayout

29
推荐指数
3
解决办法
8015
查看次数

如何使用自动布局修复Xcode 11(iOS 12,iOS 13)中的“可滚动内容大小歧义”

使用自动版式时,无法在Xcode 11 beta的视图控制器中设置简单的UIScrollView。我知道必须将滚动视图限制在边缘,然后将滚动视图的宽度和高度设置为等于包含滚动视图的整个视图的宽度和高度。但是,当我尝试设置宽度和高度相等时,我没有选择。

在滚动视图中右键单击并拖动到整个主视图时,将获得以下选项:

  • 通往安全区域的空间
  • 安全区域的顶部空间
  • 将空间拖到安全区域
  • 底部空间到安全区域
  • 在安全区域内水平居中
  • 在安全区域内垂直居中

在其他视频中,我似乎没有提供“等宽”和“等高”选项。

我是在做错什么,还是Apple改变了Xcode 11中滚动视图的工作方式?

uiscrollview ios-autolayout xcode11

25
推荐指数
2
解决办法
5448
查看次数

如何为不同的屏幕尺寸设置不同的自动布局约束

我有一个带静态单元格的tableView.单元格包含一个完全填充它的ImageView.我还有另一个较小的ImageViews.我使用约束来定位这个ImageViews.我有一个关于调整约束的问题.如何在不编程if/else循环的情况下,如何为不同的设备大小设置不同的约束常量.有没有办法在故事板中设置它?我有一个主要布局的主要约束,例如,常数值为10.这对于iPhone 5屏幕是可以的,但在iPhone 6/6 plus屏幕上它应该高于10. iPhone5 Autolayout iPhone6 Autolayout

uitableview uiimageview ios swift ios-autolayout

22
推荐指数
2
解决办法
3万
查看次数

UIHostingController 应该扩展以适应内容

我有一个自定义UIViewControllerRepresentable(与布局相关的代码如下所示)。这试图复制本机 SwiftUI ScrollView,除了它从底部滚动,除了顶部。

查看层次结构

view: UIView
|
\- scrollView: UIScrollView
   |
   \- innerView: UIView
      |
      \- hostingController.view: SwiftUI hosting view
Run Code Online (Sandbox Code Playgroud)

当视图初始化时,这一切都按预期工作。托管视图填充了其内容,并且约束确保滚动视图的contentSize设置正确。

但是,当宿主视图的内容更改时,hostingController.view不会调整大小以适合其内容。

从 Xcode 中的应用程序捕获 UI 的屏幕截图。 显示宿主控制器的内容扩展到宿主视图本身的边界之后,没有正确调整大小。

绿色:正如预期的那样,滚动视图与托管视图控制器的大小相匹配。

蓝色:托管视图本身。它保持第一次加载时的大小,并且不会像它应该的那样消耗。

红色:托管视图中的堆栈视图。在此屏幕截图中,内容已添加到堆栈中,导致其展开。结果,您可以看到大小的差异。

UIHostingController(蓝色)应该展开以适应其内容(红色)。

滚动视图的内容大小没有明确设置,因为这是由自动布局处理的。

如果有帮助,约束代码如下所示。

class UIBottomScrollViewController<Content: View>: UIViewController, UIScrollViewDelegate {
    var hostingController: UIHostingController<Content>! = nil

    init(rootView: Content) {
        self.hostingController = UIHostingController<Content>(rootView: rootView)
        super.init(nibName: nil, bundle: nil)
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    var scrollView: UIScrollView = UIScrollView()
    var innerView = UIView()

    override …
Run Code Online (Sandbox Code Playgroud)

ios swift ios-autolayout swiftui uihostingcontroller

21
推荐指数
5
解决办法
3429
查看次数

如何通过自动布局设置集合视图的单元格大小

嗨,我正试图通过改变细胞大小auto layout.

我想用3乘3显示单元格.

第一个Cell的边距= 0

最后一个单元格的边距= 0

并且所有小区的空间都是1pt.像一个instagram.

在此输入图像描述

在此输入图像描述

我应该设置为Cell的尺寸吗?我希望通过Autolayout设置约束.

我也尝试使用代码设置单元格的大小.

这是我的代码:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSizeMake(123, 123);
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
    return 1;
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

但是......我认为它并不完全可以计算出细胞的大小.

如何根据屏幕尺寸设置单元格的大小?

我必须在单元格之间设置1pt的空间.

无论如何只能使用故事板设置?

如果没有,我如何设置代码?

谢谢.

uicollectionview uicollectionviewcell swift ios-autolayout

18
推荐指数
3
解决办法
4万
查看次数

具有估计高度的集合视图组合布局不起作用

我希望我的应用程序针对每个辅助功能选项进行优化,包括文本大小。

我根据具有组合布局的部分制作了一个 collectionView 布局。所以我需要我的单元格的高度随着它的内容增长。我认为 using.estimated(constant)可以完成这项工作,但它似乎不起作用。内部约束对我来说似乎很好。

这是我正在使用的布局:

let size = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.42), heightDimension: .estimated(90))
let item = NSCollectionLayoutItem(layoutSize: NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(90)))
item.contentInsets = NSDirectionalEdgeInsets(top: 5.0, leading: 12.0, bottom: 5.0, trailing: 12.0)
let group = NSCollectionLayoutGroup.vertical(layoutSize: size, subitem: item, count: 1)
let section = NSCollectionLayoutSection(group: group)
section.contentInsets = NSDirectionalEdgeInsets(top: 0.0, leading: 6.0, bottom: 0.0, trailing: 0.0)
section.orthogonalScrollingBehavior = .groupPaging
Run Code Online (Sandbox Code Playgroud)

当我在辅助功能设置上设置更高的文本大小时,会发生什么:

在此处输入图片说明

单元格应该包含 2 个标签,这里是 autoLayoutConstraints :

    NSLayoutConstraint.activate([
        self.titleLabel.topAnchor.constraint(equalTo: self.container.topAnchor, constant: 10),
        self.titleLabel.leftAnchor.constraint(equalTo: self.container.leftAnchor, constant: 20),
        self.titleLabel.rightAnchor.constraint(equalTo: self.container.rightAnchor, constant: -20)
    ]) …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview swift ios-autolayout ios13

17
推荐指数
4
解决办法
9561
查看次数

在7.3/9/2 + Swift中如何禁用旋转动画,当设备旋转时?

这个问题严格关于iOS9 +

假设您有一个普通的现代应用程序(自动布局,故事板,通用),它允许所有四个旋转位置

在此输入图像描述

您希望它以正常方式自动旋转,因此当用户将设备从横向旋转到纵向时,它将更改为新的基于约束的布局

但是在用户旋转设备期间,您只是想要没有动画.你希望它只是"点击"到新的侧面或直立布局.

我能够实现这一目标的唯一方法是添加:

override func viewWillTransitionToSize(size:CGSize,
       withTransitionCoordinator coordinator:UIViewControllerTransitionCoordinator)
    {
    coordinator.animateAlongsideTransition(nil, completion:
        {_ in
        UIView.setAnimationsEnabled(true)
        })
    UIView.setAnimationsEnabled(false)
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator);
    }
Run Code Online (Sandbox Code Playgroud)

一个视图控制器,一个最高或接近最高的VC,它保存其余的容器视图或场景中的任何内容.

这与使用willRotateToInterfaceOrientation/didRotateFromInterfaceOrientation(现在都无法在现代iOS中使用)来开启动画的古老想法基本相同.

但是有很多问题

  • 这不起作用AppWide,它是一个烂摊子,它是基于场景的

  • 关闭所有动画似乎很糟糕

  • 你可以看到各种各样的赛道

这个问题严格关于iOS9 +

这些天,有没有更好的方法来关闭支持横向/肖像的应用程序中的旋转动画???

这个问题严格关于iOS9 +

ios auto-rotation swift ios-autolayout ios9

16
推荐指数
2
解决办法
1993
查看次数