• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 以编程方式约束

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:12:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在这个 View 上需要一点帮助。在实践中,我想减少绿色按钮的高度。我尝试以各种方式修复它,但要么使应用程序崩溃,要么它们无法正常工作。

谁能告诉我怎么解决?

有问题的 View 的屏幕截图:

View

此时此处以编程方式。我必须降低高度的绿色部分称为“buttonShare”

private extension DropPreviewView {

struct Constants {
    static let regionSpan: CLLocationDistance = 250
    static let cornerRadius: CGFloat = 10
    static let headerHeight: CGFloat = 60
}

func setupUI() {

    buttonShare.do {
        $0.backgroundColor = .green
        $0.addTarget(self, action: #selector(didTapOutsideView), for: .touchUpInside)
    }

    blurredBackgroundView.do {
        $0.effect = UIBlurEffect(style: .dark)
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapOutsideView))
        $0.addGestureRecognizer(tapGestureRecognizer)
    }

    spinner.do {
        $0.hidesWhenStopped = true
        $0.color = .darkGray
        $0.startAnimating()
    }

    contentView.do {
        $0.backgroundColor = .white
        $0.clipsToBounds = true
        $0.layer.cornerRadius = Constants.cornerRadius
    }

    dropPreviewImageView.do {
        $0.contentMode = .scaleAspectFill
        $0.clipsToBounds = true
        $0.isUserInteractionEnabled = true
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapOnPreviewImage))
        $0.addGestureRecognizer(tapGestureRecognizer)
    }
}

func arrangeSubviews() {

    addSubview(blurredBackgroundView, constraints: [
        blurredBackgroundView.topAnchor.constraint(equalTo: topAnchor),
        blurredBackgroundView.leftAnchor.constraint(equalTo: leftAnchor),
        blurredBackgroundView.bottomAnchor.constraint(equalTo: bottomAnchor),
        blurredBackgroundView.rightAnchor.constraint(equalTo: rightAnchor),
        ])

    addSubview(contentView, constraints: [
        contentView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.8),
        contentView.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.7),
        contentView.centerXAnchor.constraint(equalTo: centerXAnchor),
        contentView.centerYAnchor.constraint(equalTo: centerYAnchor),
        ])

    addSubview(buttonShare, constraints: [
        buttonShare.centerXAnchor.constraint(equalTo: centerXAnchor)
        ])

    header.addConstraint(
        header.heightAnchor.constraint(equalToConstant: Constants.headerHeight)
    )

    let innerStack = UIStackView(arrangedSubviews: [dropPreviewImageView, buttonShare]).then {
        $0.distribution = .fillEqually
        $0.axis = .vertical
        $0.spacing = 10
    }

    let stackView = UIStackView(arrangedSubviews: [header, innerStack, buttonShare]).then {
        $0.axis = .vertical
        $0.distribution = .fill
        $0.spacing = 10
    }

    contentView.addSubview(stackView, constraints: [
        stackView.topAnchor.constraint(equalTo: contentView.layoutMarginsGuide.topAnchor),
        stackView.leftAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leftAnchor),
        stackView.bottomAnchor.constraint(equalTo: contentView.layoutMarginsGuide.bottomAnchor),
        stackView.rightAnchor.constraint(equalTo: contentView.layoutMarginsGuide.rightAnchor),
        ])
    dropPreviewImageView.addSubview(spinner, constraints: [
        spinner.centerXAnchor.constraint(equalTo: dropPreviewImageView.centerXAnchor),
        spinner.centerYAnchor.constraint(equalTo: dropPreviewImageView.centerYAnchor),
        ])
}



Best Answer-推荐答案


试试:

    addSubview(buttonShare, constraints: [
        buttonShare.centerXAnchor.constraint(equalTo: centerXAnchor)
        buttonShare.heightAnchor.constraint(equalToConstant: 50).isActive = true
        buttonShare.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 12).isActive = true
        ])

编辑:您需要将绿色 View 上方的 View 底部锚定到按钮顶部。确保这是在上面的代码之后

关于ios - 以编程方式约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50525246/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap