- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
所以我尝试使用以下代码以编程方式向我的 View 添加约束。我正在尝试将 32 的顶部空间和 16 的前导空间添加到以编程方式添加到我的 View Controller 之一的 View 中,但我似乎遇到了一些问题。
下面是我如何将按钮返回到我的 View 以便以编程方式添加它的示例。
// Creating the button
func createDismissButton(vwParentView: OnboardingViewController) -> UIButton {
let dismissButton = UIButton()
dismissButton.setImage(UIImage(named: "Close"), forState: .Normal)
dismissButton.frame = CGRectMake(16, 32, 34, 34)
dismissButton.addTarget(self, action: "dismiss:", forControlEvents: .TouchUpInside)
// AUTO LAYOUT
// WIDTH & HEIGHT
let dismissWidthButtonConstraint = NSLayoutConstraint (item: dismissButton,
attribute: NSLayoutAttribute.Width,
relatedBy: NSLayoutRelation.Equal,
toItem: nil,
attribute: NSLayoutAttribute.NotAnAttribute,
multiplier: 1,
constant: 34)
let dismissHeightButtonConstraint = NSLayoutConstraint (item: dismissButton,
attribute: NSLayoutAttribute.Width,
relatedBy: NSLayoutRelation.Equal,
toItem: nil,
attribute: NSLayoutAttribute.NotAnAttribute,
multiplier: 1,
constant: 34)
// SPACING
let dismissButtonTopConstraint = NSLayoutConstraint(item: dismissButton,
attribute: .Top,
relatedBy: .Equal,
toItem: vwParentView.view,
attribute: .Top,
multiplier: 1.0,
constant: 32)
let dismissButtonLeftConstraint = NSLayoutConstraint(item: dismissButton,
attribute: .Leading,
relatedBy: .Equal,
toItem: vwParentView.view,
attribute: .Leading,
multiplier: 1.0,
constant: 16)
dismissButton.addConstraint(dismissWidthButtonConstraint)
dismissButton.addConstraint(dismissHeightButtonConstraint)
dismissButton.addConstraint(dismissButtonTopConstraint)
dismissButton.addConstraint(dismissButtonLeftConstraint)
return dismissButton
}
但它似乎在我添加 vwParentView.view
的间距上失败了,因为它在日志中出现了关于项目属性必须是 View 的错误。但是现在,当我使用这些属性运行代码时,出现以下错误。
“NSInternalInconsistencyException”,原因:“无法使用未准备好约束的 View 层次结构来设置布局。”
我正在尝试将此按钮添加到 View 中,该 View 也是通过编程方式创建的,如下所示。
override func viewWillAppear(animated: Bool) {
// Add the view below to the current view controller
self.view.addSubview(generatePurchasePaging().view)
}
func generatePurchasePaging() -> OnboardingViewController {
let welcomePage = OnboardingContentViewController(title: "PAY WHAT YOU WANT", body: "I made my app so you could have the best experience reading tech related news. That’s why I want you to value it based on your satisfaction.", image: UIImage(named: "Purchase-Pig"), buttonText: "") { () -> Void in
}
let firstPurchasePage = OnboardingContentViewController(title: "MINT", body: "The app is great but there’s still a few places in room of improvement. If this is your feeling this is for you.", image: UIImage(named: "Purchase-Mint"), buttonText: "69p") { () -> Void in
}
let secondPurchasePage = OnboardingContentViewController(title: "SWEET", body: "IThis is the suggested price where you value the time I spent on development and design. Feel free to pay more or less.", image: UIImage(named: "Purchase-Lolly"), buttonText: "£1.49") { () -> Void in
}
let thirdPurchasePage = OnboardingContentViewController(title: "GOLD", body: "Hello is it me your looking for, if this popped into your mind using the app then this is the price for you.", image: UIImage(named: "Purchase-Coin"), buttonText: "£2.99") { () -> Void in
}
let purchaseVC = OnboardingViewController(backgroundImage: nil, contents: [welcomePage, firstPurchasePage, secondPurchasePage, thirdPurchasePage])
purchaseVC.shouldMaskBackground = false
purchaseVC.view.addSubview(createDismissButton(purchaseVC))
return purchaseVC
}
最佳答案
一些想法:
当您以编程方式创建 View 时,translatesAutoresizingMaskIntoConstraints
默认为 true
。关闭此功能。
在将另一个 View (它的父 View ?)添加到 View 层次结构之前,您要对其设置约束。因此,请确保 (a) 您首先执行 addSubiew
并且 (b) 应将此约束添加到最近的公共(public)父级(通常是父 View ),而不是按钮本身。 .NotAnAttribute
约束可以添加到按钮,但其余的应该添加到最近的公共(public)父级。
您同时设置了约束和框架
。如果你做前者,则不需要后者。
如果您在采取上述措施后仍然无法正常工作,请分享错误的全文,而不仅仅是单行消息。
关于swift - NSLayout 约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34285045/
我在使用以下代码时遇到问题: function http_file_exists($url){ $f=fopen($url,"r"); if($f){ fclose($f); retu
我已经通过 Git 部署到 Azure 几个月了,没有出现重大问题,但现在我似乎遇到了一个无法克服的错误。 我创建了一个新的 Azure 网站,为正在开发的项目创建单独的预览链接。我在新站点上设置了
我已经通过flutter创建了一个App并完成了它,我想在flutter文档中阅读时进行部署。 我收到此错误: FAILURE: Build failed with an exception. * W
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
我正在尝试使用 RapidJSON 解析从服务器接收到的数据。以下是收到的确切字符串: [ { "Node": "9478149a08f9", "Address": "172.17
我尝试为 ios 编译 OpenCV。我总是收到这些错误。我用不同版本的opencv试了一下,结果都是一样的。 我运行这个:python 平台/ios/build_framework.py ios_o
我在一台机器上做基本的发布/订阅,我的客户端是 StackExchange-Redis 的 C# 客户端,我在同一台机器上运行基于 Windows 的 Redis 服务器(服务器版本 2.8.4) 当
我有这段代码,但无法执行,请帮我解决这个问题 连接 connect_error) { die ("connection failed: " . $terhubung->connect_erro
我在 tomcat 上运行并由 maven 编译的 Web 应用程序给出了以下警告和错误。我可以在本地存储库中看到所有 JAR,但有人可以帮忙吗。 WARNING: Failed to scan JA
我正在 Windows 8 上使用 Android Studio 开发一个 android 应用程序,我正在使用一些 native 代码。突然间我无法编译我的 C 文件。当我运行 ndk-build
下面的代码对类和结构的成员进行序列化和反序列化。序列化工作正常,但我在尝试使用 oarch >> BOOST_SERIALIZATION_NVP(outObj); 反序列化时遇到了以下错误; 代码中是
如果我运行此命令“rspec ./spec/requests/api/v1/password_reset_request_spec.rb”,此文件中的所有测试都会通过。 但是,当我运行“rspec”时
我在尝试执行测试以使用 Protractor 上传文件时出错,我的代码是这个 it('it should be possible to upload a file', function() {
System.loadLibrary("nativefaceswap"); 当我运行我的应用程序时,我在 Android Studio 中发现了此类错误。在logcat中显示: java.lang.U
我希望有人能帮助我!使用任何方法或命令行的任何 SSL/HTTPS 调用均无效。 我在 Windows 10 中使用 Ubuntu Server 18.04 作为子系统。我的问题是昨天才开始出现的,因
通过删除这两个值将日期字段从 null=True 和 Blank=True 更改为 required 时,使用 db.alter 命令时遇到问题。 当以下行被注释掉时,迁移运行不会出现问题。
我第一次使用 Heroku 尝试创建应用程序(使用 SendGrid 的 Inbound Parse Webhook"和 Twilio SMS 通过电子邮件发送和接收 SMS 消息)。通过 Virtu
我正在将我的 swift 项目更新到 Xcode 7 上的 Swift 2.0。xcode 在构建项目时报告了以下错误: 命令/Applications/Xcode.app/Contents/Deve
在我的代码中,SSL 库函数 SSL_library_init() 没有按预期返回 1。我如何才能看到它返回了什么错误? 我在 SSL_library_init() 之后调用了 SSL_load_er
我正在尝试运行在以下链接中找到的答案: Asynchronously Load the Contents of a Div 但是当我这样做时,我会遇到我不太理解的错误。 我的代码: $(documen
我是一名优秀的程序员,十分优秀!