我想将视图从一个位置移动到另一个位置,我可以使用它来实现它
self.view.center = CGPointMake(100, 200);
Run Code Online (Sandbox Code Playgroud)
但是,如果项目使用的是Autolayout,则视图将在运行后返回到原始位置:
[self.view.superview setNeedsLayout];
Run Code Online (Sandbox Code Playgroud)
然后如何实际将视图移动到新位置?
根据Cocoa Auto Layout Guide,我可以使用视觉约束格式语言中的破折号来"表示标准的Aqua空间:"
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[a]-[b]"
options:0
metrics:nil
views:viewDict]];
Run Code Online (Sandbox Code Playgroud)
但是,NSLayout...如果我在不使用可视格式语言的情况下构建约束,我似乎无法找到允许我做同样事情的常量或方法:
[self addConstraint:[NSLayoutConstraint constraintWithItem:a
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:b
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:<# ??? #>]];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我是否可以使用常量(或其他值或方法)来定义Aqua空间?
假设我有两个UILabel,一个是URL,一个是计时器:
[http://website.com/link/to/specific/story] [9m 42s]
Run Code Online (Sandbox Code Playgroud)
但是"计时器"UILabel改变了很多宽度.有时它只是12s例如,有时它是125h 32m 8s.有很多变化.我希望计时器UILabel占用所需的宽度和URL标签以占用其余部分.这意味着如果计时器更长,更短的URL等.
如何在自动布局中执行此操作?最好在Interface Builder中?
我最近又开始使用Swift进入iOS开发,现在我正在研究定制的UIControl.对于布局和灵活性,此自定义视图使用StackView构建.
...基本上只是具有与StackView相同的功能,当我将它直接拖到故事板中时我通常拥有它 - 它调整大小以适应没有问题.这与自我调整tableview单元基本相同.
我可以将我的CustomView简化为一个简单的例子:它是一个包含三个标签的StackView,Alignment设置为Center,Distribution Equal Centering.StackView将固定到左,右和顶部布局指南(或尾随,前导和顶部).我可以轻松地使用CustomView重新创建,从XIB加载转换为具有相同参数的CustomView - 我将两者作为屏幕截图附加.
import UIKit
@IBDesignable
class CustomView: UIView {
// loaded from NIB
private weak var view: UIView!
convenience init() {
self.init(frame: CGRect())
}
override init(frame: CGRect) {
super.init(frame: frame)
self.loadNib()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.loadNib()
}
override func layoutSubviews() {
super.layoutSubviews()
// we need to adjust the frame of the subview to no longer match the …Run Code Online (Sandbox Code Playgroud) 我已将我的项目更新到 Xcode 13 和 iOS 15。现在应用程序崩溃,并出现与 UITableViewCells 中自动调整蒙版大小相关的错误。我尝试将检查器中的 UITableViewCells Layer 属性更改为 Inferred 并按照这篇文章进行操作,但它们都不起作用。
你遇到过这个问题吗。如何修复它?
以下是有关该错误的一些信息:
override func awakeFromNib() {
super.awakeFromNib()
selectionStyle = .none
setupEventAction()
configureAccessibilityForCellItem()
}
override func prepareForReuse() {
super.prepareForReuse()
eventView.eventImageView.image = nil
}
func configureAnnouncement(announcement: AnnouncementsRowItem, isWhiteCell: Bool = false) {
eventView.isHidden = announcement.event == nil
eventView.backgroundView.backgroundColor = isWhiteCell ? R.color.basic1_bg() : R.color.basic2_bg()
if announcement.event?.eventID.isEmpty ?? false || !isWhiteCell {
self.backgroundColor = R.color.basic2_bg()
}
bubbleView.configureAnnouncementsBubbleView(announcement: announcement)
eventView.configureAnnouncementsEventView(announcement: announcement)
layoutIfNeeded()
}
private func setupEventAction() {
eventView.isUserInteractionEnabled …Run Code Online (Sandbox Code Playgroud) iOS 8为tableViews引入了一种方法,可以根据内容自动调整单元格的高度(通过AutoLayout).
// in viewDidLoad:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44.0
Run Code Online (Sandbox Code Playgroud)
我已经使用标签,图像等.
但是,一旦单元格的文本视图发生变化,我无法找到表格视图单元格自动增长的方法吗?
有关设置的更多信息:单元格内的UITextView对表格视图单元格的contentView具有水平和垂直约束.我还禁用了文本视图的滚动.
我还尝试手动更改单元格的高度约束,但单元格也不会采用这些更改.
我正在寻找一个Notepad ++的插件,它将自动对齐(自动格式化)我的Css文件.类似于visual studio ctrl + k,ctrl + d只对记事本++有效.
有人知道这样的事吗? 
我想创建只有垂直滚动的视图.事实证明,在iOs中很难做到.我已经完成了这个步骤:
1)在故事板中创建UIViewController;
2)在UIViewController中的View中添加ScrollView,并为每一侧添加0个约束.
启动我的应用程序后,所有工作,但:
1)我应该如何禁用水平滚动?我向右侧添加0约束我的scrollView + 0约束到我的uilabel右侧(因为你在屏幕上看到它没有附加到右边,它有不同的约束,但在属性我设置约束= 0)并且,正如我所想,标签文本应该在我的屏幕边界,但是当我启动应用程序时我可以向右滚动,即可用文本没有换行,我的scrollview只是调整大小以适应文本.我试图设置我的scrollView在代码:scrollView.contentSize = CGSize(UIScreen.mainScreen().bounds.width, height: 800),但没有帮助.
2)如果我滚动到很多,那么出现空白区域,这不是很酷,如何解决?
令人惊讶的是这不是开箱即用的,因为这似乎是堆栈视图的一个重要用例.我有一个UITableViewCell子类,它将一个UIStackView添加到contentView.我正在向堆栈视图中添加标签,tableView(_cellForRowAtIndexPath:)并且tableview设置为使用动态行高,但它似乎不起作用,至少在Xcode 7.3中.我还认为隐藏在堆栈视图中的已安排的子视图是可动画的,但这似乎也被打破了.
有关如何使其正常工作的任何想法?
class StackCell : UITableViewCell {
enum VisualFormat: String {
case HorizontalStackViewFormat = "H:|[stackView]|"
case VerticalStackViewFormat = "V:|[stackView(>=44)]|"
}
var hasSetupConstraints = false
lazy var stackView : UIStackView! = {
let stack = UIStackView()
stack.axis = .Vertical
stack.distribution = .FillProportionally
stack.alignment = .Fill
stack.spacing = 3.0
stack.translatesAutoresizingMaskIntoConstraints = false
return stack
}()
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
contentView.addSubview(stackView)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented") …Run Code Online (Sandbox Code Playgroud) 在WWDC,Apple承诺将发布一款新的Instruments工具,用于在iOS上调试AutoLayout.它应该"稍后"发布.我在Xcode 10.0.0发行版中找不到它.我忽略了什么,或者Apple没有发布它吗?
autolayout ×10
ios ×7
uistackview ×2
uitableview ×2
auto-indent ×1
cocoa ×1
cocoa-touch ×1
css ×1
instruments ×1
ios15 ×1
ios8 ×1
iphone ×1
macos ×1
notepad++ ×1
objective-c ×1
plugins ×1
swift ×1
uikit ×1
uilabel ×1
uiscrollview ×1
xcode ×1
xcode13 ×1
xib ×1