标签: ios-autolayout

首次加载时某些单元格的 UITableViewCell 高度错误

我用来UITableViewAutomaticDimension计算表格视图单元格的高度。这对我来说可以。但对于某些单元格,返回的高度是 44,而不是动态计算高度。但是,当向上滚动并返回到同一单元格时,高度会被完美地重新计算。所以我想我没有任何错误的约束,因为在我手动滚动并更正所有单元格高度后,之后不会显示任何约束破坏警告。

编辑

下面给出的是图像的屏幕截图(裁剪时混乱,但可以从个人资料图像中看到问题。)。第一个单元高度计算正确。但其余的都是错误的。 在此输入图像描述

objective-c uitableview nslayoutconstraint ios-autolayout uitableviewautomaticdimension

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

使垂直空间约束常数等于屏幕高度的百分比

我希望两个子视图之间的垂直间距约束常量值是屏幕高度的百分比。这样,设计在所有设备上看起来都差不多。

我如何在故事板中做到这一点?有什么众所周知的技巧吗?

在此输入图像描述

也许有一些技巧可以通过内容优先级、压缩阻力或较低优先级的第二个约束来实现这一点?

ios autolayout nslayoutconstraint ios-autolayout

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

使用自动布局和 SnapKit 的相对定位

我有一个标签,无论使用什么设备,我都希望在屏幕上具有相同的相对位置。例如,标签位于距视图顶部边距 10% 和距视图左边距 30% 的位置。

常量将始终进行定位,例如距视图边缘 150 像素,因此对于分辨率较小的设备会更大,而分辨率较大的设备只会有更小的距离......

有没有办法以编程方式实现这一点,例如在 SnapKit 的帮助下?

我的代码目前看起来像这样:

import UIKit
import SnapKit


class worldViewController: UIViewController {
      lazy var correctFieldNew = UILabel()

    override func viewDidLoad() {
        super.viewDidLoad()

            self.view.addSubview(correctFieldNew)
            correctFieldNew.backgroundColor = UIColor.blueColor()

            correctFieldNew.snp_makeConstraints { (make) -> Void in
                make.size.equalTo(CGSizeMake(90, 30))
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

我觉得我必须在这里使用乘数,但是当我写下类似的东西时,标签不会移动一英寸:

make.top.equalTo(self.view).multipliedBy(0.1) 
Run Code Online (Sandbox Code Playgroud)

ios swift ios-autolayout snapkit

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

UILabel 和 UITextView 未正确对齐

我确实有一个 UILabel 和 UITextView 彼此重叠,与自动布局左对齐。但它看起来像这样:

在此输入图像描述

正确对齐这些的最佳方法是什么?

uilabel ios-autolayout swift3

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

Xcode 9.1 警告“iOS 11.0 之前的语言方向布局边距”

我注意到一个 Xcode 警告说:

“iOS 11.0 之前的语言方向布局边距”

甚至这个问题在Apple 开发者论坛上也没有得到解答

我使用过故事板和警告不会导致任何特定视图。

原因是什么或有什么解决办法?

margin ios swift ios-autolayout

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

使用 UITableViewAutomaticDimension 时如何更改 UitableviewCell 中 UIView 的高度约束

在此输入图像描述

我在 UITableViewCell 中有一个 UIView ,当用户点击“更少/更多”按钮时需要更改其高度

我的代码是

 - (CGFloat)tableView:(UITableView *)tableView       estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewAutomaticDimension;
}
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview ios ios-autolayout uitableviewautomaticdimension

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

为什么我们需要 invalidateLayout?

我尝试实现旋转调整,因此在教程中作者在设置新首选项之前使用了 invalidatelayout 功能。但实际上所有工作都可以在没有 invalidateLayout 的情况下工作,但我之前在另一种情况下尝试过并得到相同的“无”输出。

   override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {

    collectionView.collectionViewLayout.invalidateLayout()

    let indexPath = IndexPath(item: pageControl.currentPage, section: 0)
    //scroll to indexPath after the rotation is going
    DispatchQueue.main.async {
        self.collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
        self.collectionView.reloadData()
    }

}
Run Code Online (Sandbox Code Playgroud)

那么为什么我们需要 invalidateLayout 呢?(我阅读了文档,但似乎这个功能有点......它似乎什么都不做......我不知道......也许是多余的?)

ios swift ios-autolayout

5
推荐指数
0
解决办法
3109
查看次数

使用stackview是否需要使用autolayout

是否有必要强制使用自动布局来仅使用 stackview 假设我已经制作了没有自动布局的整个项目,现在对于特定屏幕我必须使用 Stackview 来平均划分视图内的标签数量。有什么解决办法吗..

问题

实际上我必须自定义一个没有自动布局的旧项目,现在我必须只修改一个屏幕,它不需要任何约束,而只是像 uitablecell 一样的 stackview,每个单元格中有 8 个标签等分。

我知道我们可以通过计算帧运行时间来做到这一点,但是还有其他方法可以做到吗?

autoresize ios stackview swift ios-autolayout

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

从iOS“安全区域”中排除导航栏

在我的 iOS 应用程序中,我在导航栏下方呈现了视图。这是因为导航栏是隐藏的,直到用户点击屏幕。

下面的屏幕截图说明了我的问题。

“X”按钮呈现在 iPhone X 的缺口下方,几乎看不到。这是我将按钮限制topAnchor为其superview!.topAnchor.

请注意,这适用于除 iPhone X 之外的所有设备。

在此处输入图片说明

此屏幕截图中的“X”按钮锚定在其上superview!.safeAreaLayoutGuide.topAnchor并呈现在导航栏下方。考虑到 Apple 的文档,这是有道理的safeAreaLayoutGuide

“本指南反映了导航栏、标签栏、工具栏和其他祖先视图未涵盖的视图部分。”

在此处输入图片说明

但是,我希望“X”按钮呈现在 iPhone X 的缺口下方和导航栏下方。这是隐藏导航栏时的样子:

在此处输入图片说明

“X”按钮应呈现在缺口正下方。

所以我的问题是:

有没有办法从视图中排除导航栏safeAreaLayoutGuide?如果没有,除了手动偏移 iPhone X 上的按钮之外,我还有什么选择。

请注意,我正在以编程方式进行所有操作。我不再使用故事板。

谢谢!

ios autolayout ios-autolayout iphone-x

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

更改窗口 rootViewController 后安全区域插入错误

我正在inputAccessoryView使用UIViewController. 一切正常,直到我改变UIWindows rootViewController。之后,safeAreaInsets肖像被报告为风景,反之亦然。

rootViewController仅当从具有键盘输入的位置进行更改时才会发生这种情况。

以下是重现该问题的示例项目:https ://github.com/jcavar/ChangeRootSafeArea

我想这是某种魔法UITextEffectsWindow造成的。我尝试在更改之前完全删除它rootViewController,但随后输入附件视图不再出现。

对此有什么想法吗?

ios autolayout ios-autolayout safearealayoutguide

5
推荐指数
0
解决办法
697
查看次数