NSLayoutConstraint.constraintsWithVisualFormat对齐右下方

时间:2016-03-17 10:37:01

标签: objective-c xcode swift autolayout

我想在容器视图的右下角放置一个指示器视图,我有这个代码来插入视图

var img:UIImageView?
            img         = UIImageView(frame: CGRect(x: 0, y: 0, width: singleCheckViewWidth, height: singleCheckViewHeight))
            img!.image  = UIImage(named: "check")
            img!.tag    = 21
            img!.translatesAutoresizingMaskIntoConstraints = false
            img!.backgroundColor = UIColor.redColor()
            //Aggiungo la vista al fumetto
            cell.textView!.addSubview(omg!)

问题是,使用此代码,我的左上角有10px边距的图标,并且工作正常:

let iconVerticalConstraints = NSLayoutConstraint.constraintsWithVisualFormat(
                "V:|-10-[indicator(\(singleCheckViewHeight))]",
                options: [],
                metrics: nil,
                views: views)
            allConstraints += iconVerticalConstraints

            let horizontalConstraints = NSLayoutConstraint.constraintsWithVisualFormat(
                "H:|-10-[indicator(\(singleCheckViewWidth))]",
                options: [],
                metrics: nil,
                views: views)
            allConstraints += horizontalConstraints

这是图片:

enter image description here

但如果我尝试使用此代码在左下角移动图像:

            let iconVerticalConstraints = NSLayoutConstraint.constraintsWithVisualFormat(
                "V:[indicator(\(singleCheckViewHeight))]-10-|",
                options: [],
                metrics: nil,
                views: views)
            allConstraints += iconVerticalConstraints

            let horizontalConstraints = NSLayoutConstraint.constraintsWithVisualFormat(
                "H:[indicator(\(singleCheckViewWidth))]-10-|",
                options: [],
                metrics: nil,
                views: views)
            allConstraints += horizontalConstraints

如果我尝试使用此代码将图片放在左上角,我就不会再看到图像了:

            let iconVerticalConstraints = NSLayoutConstraint.constraintsWithVisualFormat(
                "V:|-10-[indicator(\(singleCheckViewHeight))]",
                options: [],
                metrics: nil,
                views: views)
            allConstraints += iconVerticalConstraints

            let horizontalConstraints = NSLayoutConstraint.constraintsWithVisualFormat(
                "H:[indicator(\(singleCheckViewWidth))]-10-|",
                options: [],
                metrics: nil,
                views: views)
            allConstraints += horizontalConstraints

我在容器外获取图像,如下图所示:

enter image description here

任何想法有什么不对?以及如何以直角向下移动图标?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果所有父视图都没有正确对齐,也没有兄弟姐妹,那么事情可能会失败。最重要的是,

cell.textView!.addSubview(omg!)

omg?我猜你的意思是img?或者我错了吗?

此外,除此之外,还没有提及您将这种容器放在哪种容器中?

如果它只是一个NSView或UIView,那么xyz.cell就不是放置它的地方。如果它是一个TableiewView,一个单元格可以,但是所有约束都设置好了。如果是iOS,则是UITableViewCell,即单元格的最顶层视图"即,你是否将背景视图添加为图像视图,这可能会使它黯然失色?

你能详细说明一下这个场景是什么,这样我们才能得到更好的画面吗? (没有双关语)