Ios 在关闭“自动布局”的情况下更改UIView的高度
关闭视图的自动布局。然而,这不起作用。我对身高没有限制。只有与父视图宽度相等的宽度Ios 在关闭“自动布局”的情况下更改UIView的高度,ios,swift,uiview,resize,Ios,Swift,Uiview,Resize,关闭视图的自动布局。然而,这不起作用。我对身高没有限制。只有与父视图宽度相等的宽度 @IBOutlet weak var questionTextView: UITextView! override func viewDidLoad() { var newFrame = CGRectMake(0, 0, 300, 202) questionView.frame = newFrame } 您是否在interface builder中关闭了整个nib的自动布局 不能在interface b
@IBOutlet weak var questionTextView: UITextView!
override func viewDidLoad() {
var newFrame = CGRectMake(0, 0, 300, 202)
questionView.frame = newFrame
}
您是否在interface builder中关闭了整个nib的自动布局 不能在interface builder中关闭特定子视图的自动布局-只能在运行时以编程方式关闭 根据您所说的,您仍然有一个约束处于活动状态。当您已经关闭自动布局时,如何设置约束 如果“自动布局”处于活动状态,则使用框架设置视图的高度将不起作用,因为它将与自动布局规则冲突 如果需要在“自动布局”处于活动状态时更改视图的高度,则需要为高度约束创建一个
IBOutlet
,并在运行时对其进行修改,即:
@IBOutlet weak var heightConstraint: NSLayoutConstraint!
self.heightConstraint.constant = 200
试着这样做:
var someView = UITextView(frame: CGRect(x: 0, y: 0, width: **view.bounds.size.width**, height: 123))
someView.layer.backgroundColor = UIColor.orangeColor().CGColor
view.addSubview(someView)
在您的情况下,使用父视图更改视图。[已编辑] 注:正如公认的答案所说:
如果您激活了自动布局,则使用框架设置视图高度将不起作用,因为它将与自动布局规则冲突
。这种代码的平静改变了框架,因此如果您试图将此代码用于自动布局,它将不起作用
[原始答案] 您还可以创建UIView扩展: UIViewExtensions.swift:
import Foundation
import UIKit
extension UIView {
// MARK: - Frame
/**
Redefines the height of the view
:param: height The new value for the view's height
*/
func setHeight(height: CGFloat) {
var frame: CGRect = self.frame
frame.size.height = height
self.frame = frame
}
/**
Redefines the width of the view
:param: width The new value for the view's width
*/
func setWidth(width: CGFloat) {
var frame: CGRect = self.frame
frame.size.width = width
self.frame = frame
}
/**
Redefines X position of the view
:param: x The new x-coordinate of the view's origin point
*/
func setX(x: CGFloat) {
var frame: CGRect = self.frame
frame.origin.x = x
self.frame = frame
}
/**
Redefines Y position of the view
:param: y The new y-coordinate of the view's origin point
*/
func setY(y: CGFloat) {
var frame: CGRect = self.frame
frame.origin.y = y
self.frame = frame
}
}
我还添加了设置宽度、X和Y的方法。您可以在任何视图中使用该扩展,如:
yourView.setHeght(100)
您只需要实现TranslatesAutoResizengMaskintoConstraints,通过将其设置为true,您就可以通过代码编写约束,而无需执行其他操作 示例:view.translatesAutoResizezingMaskintoConstraints=true //此代码将起作用
view.frame = CGRect(x: self.playerChatBackground.frame.origin.x, y:
self.playerChatBackground.frame.origin.y, width: 100.0, height: 36.0)
对我来说很有效!确保已连接插座,并在
viewDidLoad
实现的开始部分调用super.viewDidLoad()
!约束方法非常有效。感谢您澄清汽车布局,很好的解决方案是你应得的。我试着用一种简单的方式改变uiview的高度,不像创建一个框架,然后分配一个框架,你的解决方案很适合我的需要。这个解决方案在iOS 8、Xcode 7.2中对我来说也很有吸引力。我使用这种技术来释放iad横幅在没有收到广告时所占据的不动产。我通过将“高度限制”更改为1来实现此目的。@mmilo您能告诉我如何准确创建高度限制吗?!我在interface builder中找不到任何选项来为实际视图添加约束!将禁用约束选项。我需要调整整个视图(而不是特定子视图)的高度。代码7.3.1。谢谢