标签: autolayout

使用Autolayout动画/移动视图

我想将视图从一个位置移动到另一个位置,我可以使用它来实现它

self.view.center = CGPointMake(100, 200);
Run Code Online (Sandbox Code Playgroud)

但是,如果项目使用的是Autolayout,则视图将在运行后返回到原始位置:

[self.view.superview setNeedsLayout];
Run Code Online (Sandbox Code Playgroud)

然后如何实际将视图移动到新位置?

cocoa-touch ios autolayout

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

我可以在Autolayout的默认Aqua空间中使用什么常量?

根据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空间?

macos cocoa autolayout

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

使用自动布局,如何在同一"线"上使两个标签的宽度动态变化(根据每个标签需要的宽度进行调整)?

假设我有两个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中?

objective-c uilabel ios autolayout nslayoutconstraint

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

如何:在iOS中使用StackView View从XIB自我调整自定义视图

我最近又开始使用Swift进入iOS开发,现在我正在研究定制的UIControl.对于布局和灵活性,此自定义视图使用StackView构建.

我想要实现的目标......

...基本上只是具有与StackView相同的功能,当我将它直接拖到故事板中时我通常拥有它 - 它调整大小以适应没有问题.这与自我调整tableview单元基本相同.

橱窗

我可以将我的CustomView简化为一个简单的例子:它是一个包含三个标签的StackView,Alignment设置为Center,Distribution Equal Centering.StackView将固定到左,右和顶部布局指南(或尾随,前导和顶部).我可以轻松地使用CustomView重新创建,从XIB加载转换为具有相同参数的CustomView - 我将两者作为屏幕截图附加.

Simple StackView的屏幕截图

CustomView的屏幕截图

加载XIB文件并进行设置.

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)

xib ios autolayout uistackview intrinsic-content-size

22
推荐指数
1
解决办法
7730
查看次数

必须将自动调整大小掩码转换为约束才能具有 _setHostsLayoutEngine:YES Xcode 13

我已将我的项目更新到 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)

uikit ios autolayout ios15 xcode13

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

iOS 8使用UITextView自动调整UITableViewCell大小

iOS 8为tableViews引入了一种方法,可以根据内容自动调整单元格的高度(通过AutoLayout).

// in viewDidLoad:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44.0
Run Code Online (Sandbox Code Playgroud)

我已经使用标签,图像等.

但是,一旦单元格的文本视图发生变化,我无法找到表格视图单元格自动增长的方法吗?

有关设置的更多信息:单元格内的UITextView对表格视图单元格的contentView具有水平和垂直约束.我还禁用了文本视图的滚动.

我还尝试手动更改单元格的高度约束,但单元格也不会采用这些更改.

uitableview autolayout ios8

21
推荐指数
2
解决办法
6451
查看次数

用于自动格式Css的Notepad ++插件

我正在寻找一个Notepad ++插件,它将自动对齐(自动格式化)我的Css文件.类似于visual studio ctrl + k,ctrl + d只对记事本++有效.

有人知道这样的事吗? 在此输入图像描述

css plugins notepad++ auto-indent autolayout

21
推荐指数
1
解决办法
6万
查看次数

使用autolayout禁用UIScrollView中的水平滚动

我想创建只有垂直滚动的视图.事实证明,在iOs中很难做到.我已经完成了这个步骤:

1)在故事板中创建UIViewController;

2)在UIViewController中的View中添加ScrollView,并为每一侧添加0个约束.

3)在scrollview中添加元素,结果如下: 在此输入图像描述

启动我的应用程序后,所有工作,但:

1)我应该如何禁用水平滚动?我向右侧添加0约束我的scrollView + 0约束到我的uilabel右侧(因为你在屏幕上看到它没有附加到右边,它有不同的约束,但在属性我设置约束= 0)并且,正如我所想,标签文本应该在我的屏幕边界,但是当我启动应用程序时我可以向右滚动,即可用文本没有换行,我的scrollview只是调整大小以适应文本.我试图设置我的scrollView在代码:scrollView.contentSize = CGSize(UIScreen.mainScreen().bounds.width, height: 800),但没有帮助.

2)如果我滚动到很多,那么出现空白区域,这不是很酷,如何解决?

iphone uiscrollview ios autolayout swift

21
推荐指数
1
解决办法
2万
查看次数

使用UIStackView动态UITableView行高?

令人惊讶的是这不是开箱即用的,因为这似乎是堆栈视图的一个重要用例.我有一个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)

xcode uitableview ios autolayout uistackview

21
推荐指数
1
解决办法
1万
查看次数