标签: uistackview

UIStackView可以支持iOS 8或7吗?

我知道这UIStackview是iOS 9中的一项新功能.如果我希望我的应用程序支持iOS 8或iOS 7,这是否意味着我不应该使用堆栈视图?

ios autolayout ios7 ios8 uistackview

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

嵌套的UIStack查看破坏的约束

我有一个复杂的视图层次结构,内置在Interface Builder中,具有嵌套的UIStackViews.每次隐藏一些内部堆栈视图时,我都会收到"不满意的约束"通知.我跟踪到了这个:

(
    "<NSLayoutConstraint:0x1396632d0 'UISV-canvas-connection' UIStackView:0x1392c5020.top == UILabel:0x13960cd30'Also available on iBooks'.top>",
    "<NSLayoutConstraint:0x139663470 'UISV-canvas-connection' V:[UIButton:0x139554f80]-(0)-|   (Names: '|':UIStackView:0x1392c5020 )>",
    "<NSLayoutConstraint:0x139552350 'UISV-hiding' V:[UIStackView:0x1392c5020(0)]>",
    "<NSLayoutConstraint:0x139663890 'UISV-spacing' V:[UILabel:0x13960cd30'Also available on iBooks']-(8)-[UIButton:0x139554f80]>"
)
Run Code Online (Sandbox Code Playgroud)

具体来说,UISV-spacing约束:当隐藏UIStackView时,它的高约束得到一个0常量,但这似乎与内部stackview的间距约束发生冲突:它需要我的Label和Button之间有8个点,这与隐藏约束是不可调和的,因此约束崩溃.

有没有解决的办法?我已经尝试递归隐藏隐藏堆栈视图的所有内部StackViews,但这导致奇怪的动画,其中内容浮出屏幕,并导致严重的FPS下降启动,同时仍然没有解决问题.

cocoa-touch interface-builder ios autolayout uistackview

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

IOS stackview addArrangedSubview在特定索引处添加

如何在UIStackView中的特定索引中添加排列的子视图?

就像是:

stackView.addArrangedSubview(nibView, atIndex: index)
Run Code Online (Sandbox Code Playgroud)

ios swift uistackview

26
推荐指数
1
解决办法
8439
查看次数

你能给UIStackView边框吗?

我试图UIStackViews在我的ViewController边界中分开5个.我给他们每个人一个IBOutlet,然后打电话给他们viewDidLoad使用该layer财产但无济于事.是不可能以编程方式给出堆栈视图边框?

码:

@IBOutlet weak var stackView1: UIStackView!
@IBOutlet weak var stackView2: UIStackView!
@IBOutlet weak var stackView3: UIStackView!
@IBOutlet weak var stackView4: UIStackView!
@IBOutlet weak var stackView5: UIStackView!

override func viewDidLoad() {
    super.viewDidLoad()

    stackView1.layer.borderWidth = 5
    stackView2.layer.borderWidth = 5
    stackView3.layer.borderWidth = 5
    stackView4.layer.borderWidth = 5
    stackView5.layer.borderWidth = 5   
}
Run Code Online (Sandbox Code Playgroud)

swift uistackview

25
推荐指数
4
解决办法
2万
查看次数

UIStackView - 从中​​心均匀分布视图

我有一个UIStackView,里面UIScrollView显示水平排列的动态添加的子视图.当前的解决方案将开始显示左侧的项目,我想开始从中心分配项目而不更改子视图的宽度和高度.我怎么做?我也对不使用的解决方案持开放态度UIStackView.这样我就可以支持设备<iOS9.

CURENT

(当前)

预期

(预期)

uiscrollview ios autolayout ios9 uistackview

25
推荐指数
1
解决办法
7191
查看次数

iOS 11上导航栏中UIBarButtonItem的负间隔

在iOS 10及更低版本中,有一种方法可以在导航栏中的按钮数组中添加负间隔,如下所示:

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -8;
self.navigationItem.leftBarButtonItems = @[negativeSpacer, [self backButtonItem]];
Run Code Online (Sandbox Code Playgroud)

这不再适用于iOS 11(间隔变为正,而不是负).我已经检查了条形按钮项的视图层次结构,现在它已嵌入到_UIButtonBarStackView.如何在iOS 11上调整条形按钮的位置?

objective-c ios uistackview ios11

24
推荐指数
1
解决办法
6488
查看次数

UIStackView - 隐藏堆栈视图时的布局约束问题

我的应用有2个屏幕:

  1. TableViewVC(这里没有堆栈视图)

  2. DetailVC(此处所有嵌套堆栈视图;请参见图片链接:嵌套StackViews图片) - 注意,这些堆栈视图中有标签和图像.

当您按下tableview中的单元格时,它会将信息从TableViewVC传递到DetailVC.问题是隐藏DetailVC中的特定UIStackViews.我只想在视图加载时隐藏DetailVC中各个窗口中的2个堆栈视图.所以我在DetailVC中编写这段代码来完成这个:

override func viewDidLoad() {
    super.viewDidLoad()

    self.nameLabel.text = "John"

    self.summaryStackView.hidden = true
    self.combinedStackView.hidden = true
}
Run Code Online (Sandbox Code Playgroud)

一切看起来都很棒,但Xcode只在运行时发出许多警告.应用程序未运行时,Storyboard中没有警告.请参阅错误图片的链接:错误图片

基本上它是很多UISV隐藏,UISV间距,UISV-canvas连接错误.如果我隐藏相同的堆栈视图,这些错误就会消失,viewDidAppear但是有一些闪存的东西应该被隐藏然后隐藏起来.用户简要地看到视图然后隐藏哪个不好.

很抱歉,由于无法实际发布图片而非链接,仍然无法发布.

对于如何解决这个问题,有任何的建议吗?这是一个我真正想要推出到应用程序商店的应用程序 - 这是我的第一个,所以任何帮助都会很棒!

编辑/更新1:

我找到了一个小代码,我把这个代码放在名为DetailVC的第二个屏幕中:

// Function I use to delay hiding of views
func delay(delay: Double, closure: ()->()) {
    dispatch_after(
        dispatch_time(
            DISPATCH_TIME_NOW,
            Int64(delay * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), closure)
}

// Hide the 2 stack views after 0.0001 seconds of screen loading
override func awakeFromNib() …
Run Code Online (Sandbox Code Playgroud)

ios swift uistackview

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

你如何正确对齐水平UIStackView?

我还没有在任何地方找到答案,我不确定是否可能,但我正在尝试右对齐水平UIStackView,这样如果隐藏子视图,它们会向右侧而不是左侧移动.以编程方式(在Swift中)或使用Interface Builder

interface-builder swift uistackview

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

如何:在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
查看次数

使用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万
查看次数