Cambiar la altura de UIView con la desconnection automática desactivada

Se desactiva el layout automático para la vista. Sin embargo, esto no funciona. No tengo restricciones con respecto a la altura. Solo ancho que padre igual ve el ancho.

@IBOutlet weak var questionTextView: UITextView! override func viewDidLoad() { var newFrame = CGRectMake(0, 0, 300, 202) questionView.frame = newFrame } 

¿Desactivaste el layout automático de la plumilla completa en el generador de interfaces?

No puede desactivar el layout automático para sub vistas específicas en el creador de interfaces: solo puede hacerlo en time de ejecución mediante progtwigción.

Según lo que dijiste, todavía tienes una restricción activa. ¿Cómo tiene restricciones cuando ya desconectó el layout automático?

Si tiene layout automático activo, establecer la altura de su vista utilizando el marco no funcionará, ya que entrará en conflicto con las reglas de layout automático.

Si necesita cambiar la altura de una vista con el layout automático activo, necesitará crear un IBOutlet para su restricción de altura y modificarlo en time de ejecución, es decir:

 @IBOutlet weak var heightConstraint: NSLayoutConstraint! self.heightConstraint.constant = 200 

[editado]

PD. Como dice la respuesta aceptada: If you have auto layout active, setting the height for your view by using the frame won't work since it'll conflict with auto layout rules . Esta paz de código cambia el marco, por lo que si intenta utilizar este código con el layout automático, no funcionará.


[respuesta original]

También podría crear una extensión 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 } } 

También agregué methods para configurar el ancho, X e Y. Puedes usar esa extensión en cualquier vista que desees como:

 yourView.setHeght(100) 

Prueba algo como esto:

 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) 

En su caso, cambie la vista con vista principal.

Solo necesita implementar traduceAutorizarMascar aConstructuras, y al establecerlo como verdadero, puede escribir sus restricciones a través del código sin tener que hacer otras cosas.

Ejemplo: view.translatesAutoresizingMaskIntoConstraints = true

// Este código funcionará

 view.frame = CGRect(x: self.playerChatBackground.frame.origin.x, y: self.playerChatBackground.frame.origin.y, width: 100.0, height: 36.0)