所以我想以编程方式将 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) 你好,我是 IOS 新手,我在尝试实现的一项功能上遇到了困难。我有一个UIViewController
,其中我UIView
在顶部显示一个自定义,下面我有一个动态TableView
。我在某些情况下隐藏并显示自定义 UIView,但问题是如果我隐藏它,我的表格不会取代该视图,因此我可以看到那里的空间。我想我已经对自动布局做了一些事情,但我不擅长自动布局,所以如果有人可以提供帮助,那就太好了。我在这里附上演示屏幕,以便您可以理解。UIView
我应该做什么才能使其工作,以便表格在隐藏时占据自定义 UIView 位置
这是如果我隐藏上面部分自定义 UIView 得到的结果
我正在尝试使用透明导航栏在 UIViewController 中布局表格视图。我已经完成了这一点,在我的自定义 UINavigationController 上使用此代码:
navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationBar.shadowImage = UIImage()
navigationBar.isTranslucent = true
Run Code Online (Sandbox Code Playgroud)
在我的故事板上,我将 tableView 设置为将其边缘固定到安全区域,但顶部的除外,它固定在超级视图的顶部。
问题是我的 tableView 不是从屏幕顶部开始,而是导航栏仍然不透明。我检查了 tableView 插图,结果全部为零。我在这里做错了什么?
谢谢
我已经阅读了很多关于如何根据单元格中的文本自动调整表格单元格高度的内容。从这个,这个和这个,似乎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) 我有一个带有 UIView (V1) 和 UILabel(L1) 的垂直 UIStackView(S1)。UIView 包含水平 StackView(S2) 和 ImageView 以及垂直 StackView(S3),以将标签显示在另一个标签下方。
现在,当我隐藏顶视图(即 V1)时,我的标签占据了预期的完整高度。但我希望堆栈视图压缩以仅显示标签(L1)内容。但就我而言,它并没有减少宽度。
这是我启动和隐藏 V1 时的 ViewTree 和快照。
我一整天都在寻求这方面的帮助,但找不到答案。
我有一个子视图,在其中绘制一个矩形,该矩形由子视图构成,因此我需要知道通过自动布局调整的子视图的大小以正确地构建它。我无法找到一种方法来执行此操作ViewDidLoad()
,以便在启动时正确渲染矩形。我已经尝试过以下方法:
dayView.setNeedsLayout()
后跟,但检查这些语句的两侧显示 dayView.bounds 不变。dayView.layoutIfNeeded()
viewDidLoad()
viewDidLayoutSubviews()
,它可以工作,但会导致我的矩形被绘制 5 次,就像viewDidLayoutSubviews()
为每个重绘的子视图(我有 5 个)所调用的那样(包含矩形的相关子视图在 5 次调用中的 4 次调用时重绘) - 这看起来浪费资源,肯定有更好的方法吗?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) 我想在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) 甚至 Xcode 也提供了非常易于使用的故事板,通过它制作应用程序的 UI 非常容易。
但有时我们会遇到必须使用 CODE 来管理应用程序设计方面的情况。
我通常使用 Anchors 和 Constraints 通过代码来处理这些东西,但也有另一种方法,即“视觉格式语言”。使用任何一种方法之间真的有什么区别,或者它们是相同的,使用一种或另一种方法的优点或缺点是什么。
我有一个视图,我想在其超级视图中水平和垂直居中。
我试过这个,但它不起作用:
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) autolayout ×10
ios ×9
swift ×8
uitableview ×3
cocoa-touch ×1
constraints ×1
layout ×1
swift3 ×1
uilabel ×1
uistackview ×1
uiview ×1