标签: autolayout

使用 UILabel 以编程方式自动布局不起作用

所以我想以编程方式将 UILabel 在视图中水平和垂直居中。我关注了这个主题,但它不起作用。我怎样才能做到这一点?

p/s:这是我的代码:

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let noDataLabel = UILabel()
        noDataLabel.text = "No data :("
        noDataLabel.textColor = UIColor.redColor()
        noDataLabel.font = UIFont.systemFontOfSize(20)
        noDataLabel.sizeToFit()
        self.view.addSubview(noDataLabel)
        NSLayoutConstraint(item: noDataLabel, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1.0, constant: 0.0).active = true
        NSLayoutConstraint(item: noDataLabel, attribute: .CenterY, relatedBy: .Equal, toItem: self.view, attribute: .CenterY, multiplier: 1.0, constant: 0.0).active = true
    }
}
Run Code Online (Sandbox Code Playgroud)

uilabel ios autolayout swift

0
推荐指数
1
解决办法
1972
查看次数

将其他视图移动到隐藏的视图

你好,我是 IOS 新手,我在尝试实现的一项功能上遇到了困难。我有一个UIViewController,其中我UIView在顶部显示一个自定义,下面我有一个动态TableView。我在某些情况下隐藏并显示自定义 UIView,但问题是如果我隐藏它,我的表格不会取代该视图,因此我可以看到那里的空间。我想我已经对自动布局做了一些事情,但我不擅长自动布局,所以如果有人可以提供帮助,那就太好了。我在这里附上演示屏幕,以便您可以理解。UIView我应该做什么才能使其工作,以便表格在隐藏时占据自定义 UIView 位置

在此输入图像描述

这是如果我隐藏上面部分自定义 UIView 得到的结果

在此输入图像描述

uitableview uiview ios autolayout swift

0
推荐指数
1
解决办法
1190
查看次数

透明导航栏下的UITableView

我正在尝试使用透明导航栏在 UIViewController 中布局表格视图。我已经完成了这一点,在我的自定义 UINavigationController 上使用此代码:

navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationBar.shadowImage = UIImage()
navigationBar.isTranslucent = true
Run Code Online (Sandbox Code Playgroud)

在我的故事板上,我将 tableView 设置为将其边缘固定到安全区域,但顶部的除外,它固定在超级视图的顶部。

问题是我的 tableView 不是从屏幕顶部开始,而是导航栏仍然不透明。我检查了 tableView 插图,结果全部为零。我在这里做错了什么?

谢谢

uitableview ios autolayout swift

0
推荐指数
1
解决办法
2126
查看次数

UITableViewAutomaticDimension 似乎没有考虑细节标签的内容。我该如何解决?

我已经阅读了很多关于如何根据单元格中的文本自动调整表格单元格高度的内容。从这个这个这个,似乎UITableView.automaticDimension是要走的路。显然它也适用于系统(即非自定义)单元。

在我的表格视图中,我使用了一堆样式为“Right Detail”的系统单元格(请注意,这不是我的自定义单元格):

在此处输入图片说明

我让两个标签的“行”为 0,“换行”为“换行”以启用自动换行。现在在我的表 VC 中,我用一些数据填充了表视图,这些数据旨在显示我遇到的问题:

var strings = [("Some Very Long Black Text That Doesn't Fit. Foo Bar Baz.", ""),
               ("A", "Short Text"),
               ("B", "Foo Bar"),
               ("Not working:", "Some Very Long Grey Text That Doesn't Fit. Foo Bar Baz"),
               ("C", "Another Text")]

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return strings.count
}

override func tableView(_ …
Run Code Online (Sandbox Code Playgroud)

uitableview autolayout swift

0
推荐指数
1
解决办法
133
查看次数

当视图之一隐藏时,如何自动调整 Vertical UIStackView 的宽度?

我有一个带有 UIView (V1) 和 UILabel(L1) 的垂直 UIStackView(S1)。UIView 包含水平 StackView(S2) 和 ImageView 以及垂直 StackView(S3),以将标签显示在另一个标签下方。

现在,当我隐藏顶视图(即 V1)时,我的标签占据了预期的完整高度。但我希望堆栈视图压缩以仅显示标签(L1)内容。但就我而言,它并没有减少宽度。

这是我启动和隐藏 V1 时的 ViewTree 和快照。

视图树/视图布局

ios autolayout uistackview

0
推荐指数
1
解决办法
3302
查看次数

在 viewDidLoad() 中获取视图的渲染边界

我一整天都在寻求这方面的帮助,但找不到答案。

我有一个子视图,在其中绘制一个矩形,该矩形由子视图构成,因此我需要知道通过自动布局调整的子视图的大小以正确地构建它。我无法找到一种方法来执行此操作ViewDidLoad(),以便在启动时正确渲染矩形。我已经尝试过以下方法:

  1. 在绘制矩形之前使用dayView.setNeedsLayout()后跟,但检查这些语句的两侧显示 dayView.bounds 不变。dayView.layoutIfNeeded()viewDidLoad()
  2. 从 绘制视图viewDidLayoutSubviews(),它可以工作,但会导致我的矩形被绘制 5 次,就像viewDidLayoutSubviews()为每个重绘的子视图(我有 5 个)所调用的那样(包含矩形的相关子视图在 5 次调用中的 4 次调用时重绘) - 这看起来浪费资源,肯定有更好的方法吗?
  3. 在 内绘制视图两次ViewDidLoad(),希望第一次强制绘制会导致视图调整大小,因此第二次绘制将在第一次绘制后访问新的边界(我知道很绝望,但它仍然不起作用)。

我希望有人能帮帮忙。

func drawGradient(object: UIView, rect: CGRect, slackX: Int, gradWidth: Int, yPos: Int) -> Void {
    // the rectangle width and height set to fit within view with x & y border.

    let gradientView = UIView(frame: rect)
    let gradient = CAGradientLayer()

    gradient.frame = gradientView.frame
    gradient.colors = getDayGradientLocations().gradientCol
    gradient.locations = getDayGradientLocations().gradientLoc …
Run Code Online (Sandbox Code Playgroud)

ios autolayout swift

0
推荐指数
1
解决办法
552
查看次数

如何使用"自动布局可视格式"将两个视图放在同一位置?

我想在Swift中使用"自动布局可视化格式"在同一位置放置两个视图,我该如何以优雅的方式做到这一点?

我成功使用了NSLayoutConstraint,但我希望我仍然可以使用可视化格式找到一种优雅的方式.

我的代码使用NSLayoutConstraint:

NSLayoutConstraint(item: greenView, attribute: .Left, relatedBy: .Equal, toItem: redView, attribute: .Left, multiplier: 1.0, constant: 0).active = true
NSLayoutConstraint(item: greenView, attribute: .Top, relatedBy: .Equal, toItem: redView, attribute: .Top, multiplier: 1.0, constant: 0).active = true
NSLayoutConstraint(item: greenView, attribute: .Right, relatedBy: .Equal, toItem: redView, attribute: .Right, multiplier: 1.0, constant: 0).active = true
NSLayoutConstraint(item: greenView, attribute: .Bottom, relatedBy: .Equal, toItem: redView, attribute: .Bottom, multiplier: 1.0, constant: 0).active = true
Run Code Online (Sandbox Code Playgroud)

ios autolayout swift ios-autolayout

-1
推荐指数
1
解决办法
1630
查看次数

当我们可以在运行时创建约束和锚点时,Visual Format Language 在 iOS 中真的有用吗?

甚至 Xcode 也提供了非常易于使用的故事板,通过它制作应用程序的 UI 非常容易。

但有时我们会遇到必须使用 CODE 来管理应用程序设计方面的情况。

我通常使用 Anchors 和 Constraints 通过代码来处理这些东西,但也有另一种方法,即“视觉格式语言”。使用任何一种方法之间真的有什么区别,或者它们是相同的,使用一种或另一种方法的优点或缺点是什么。

cocoa-touch ios autolayout visual-format-language

-1
推荐指数
1
解决办法
319
查看次数

如何在 iOS Swift 3 中以编程方式设置元素视图中心?

我有一个视图,我想在其超级视图中水平和垂直居中。

我试过这个,但它不起作用:

let horConstraint = NSLayoutConstraint(item: webView, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 0.0)
view.addConstraints([horConstraint]) 
Run Code Online (Sandbox Code Playgroud)

layout constraints ios autolayout swift

-1
推荐指数
2
解决办法
5714
查看次数

Autolayouts:如何创建折叠/展开动态视图swift 3/4

我有一个问题,我不能创建一个可以折叠它的内容,可能是动态高度,我知道它很容易崩溃高度常数= 0,但我无法弄清楚如何让它再次扩展为该视图的内容是动态的,子视图可能会在以后添加

我想要那种行为

在此输入图像描述

ios autolayout swift swift3

-8
推荐指数
1
解决办法
4261
查看次数