¿Cómo cambio el tamaño de UIView?
swift height (8)
Aqui tienes. Esto debería funcionar.
questionFrame.frame = CGRectMake(0 , 0, self.view.frame.width, self.view.frame.height * 0.7)
answerFrame.frame = CGRectMake(0 , self.view.frame.height * 0.7, self.view.frame.width, self.view.frame.height * 0.3)
Tengo problemas para modificar mi altura UIView en el lanzamiento.
Tengo que UIView y quiero que uno tenga el tamaño de pantalla * 70 y el otro para llenar el vacío.
esto es lo que tengo
@IBOutlet weak var questionFrame: UIView!
@IBOutlet weak var answerFrame: UIView!
let screenSize:CGRect = UIScreen.mainScreen().bounds
y
questionFrame.frame.size.height = screenSize.height * 0.70
answerFrame.frame.size.height = screenSize.height * 0.30
No tiene ningún efecto en la aplicación durante el tiempo de ejecución. Uso el autolayout pero solo tengo restricciones de márgenes ...
¿Lo estoy haciendo todo mal?
Asignar
questionFrame.frame.size.height= screenSize.height * 0.30
no reflejará nada en la vista.
porque es una propiedad de solo obtener.
Si desea cambiar el marco de questionFrame, puede usar el siguiente código.
questionFrame.frame = CGRect(x: 0, y: 0, width: 0, height: screenSize.height * 0.70)
Esto se puede lograr con varios métodos en Swift 3.0 Trabajado en la última versión MAYO 2019
Asigne directamente los valores de Altura y Ancho para una vista:
userView.frame.size.height = 0
userView.frame.size.width = 10
Asigne el CGRect para el marco
userView.frame = CGRect(x:0, y: 0, width:0, height:0)
Detalles del método:
CGRect (x: punto de X, y: punto de Y, ancho: ancho de vista, altura: altura de vista)
Usando un método de extensión para CGRECT
Agregue el siguiente código de extensión en cualquier archivo rápido,
extension CGRect {
init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) {
self.init(x:x, y:y, width:w, height:h)
}
}
Use el siguiente código en cualquier lugar de su aplicación para que la vista establezca los parámetros de tamaño
userView.frame = CGRect(1, 1, 20, 45)
Hola crea esto se extiende si quieres. Actualización 2015 Swift 2.0
Cree File Extends.Swift y agregue este código (agregue la base de importación donde desee cambiar la altura)
/**
Get Set x Position
- parameter x: CGFloat
by DaRk-_-D0G
*/
var x:CGFloat {
get {
return self.frame.origin.x
}
set {
self.frame.origin.x = newValue
}
}
/**
Get Set y Position
- parameter y: CGFloat
by DaRk-_-D0G
*/
var y:CGFloat {
get {
return self.frame.origin.y
}
set {
self.frame.origin.y = newValue
}
}
/**
Get Set Height
- parameter height: CGFloat
by DaRk-_-D0G
*/
var height:CGFloat {
get {
return self.frame.size.height
}
set {
self.frame.size.height = newValue
}
}
/**
Get Set Width
- parameter width: CGFloat
by DaRk-_-D0G
*/
var width:CGFloat {
get {
return self.frame.size.width
}
set {
self.frame.size.width = newValue
}
}
Para uso (hereda de UIView)
inheritsOfUIView.height = 100
button.height = 100
print(view.height)
Para un tipo de barra de progreso, en Swift 4
Sigo estos pasos:
-
Creo una salida UIView:
@IBOutlet var progressBar: UIView!
-
Luego, una propiedad para aumentar su valor de ancho después de una acción del usuario
var progressBarWidth: Int = your value
-
Luego, para el aumento / disminución del progreso
progressBar.frame.size.width = CGFloat(progressBarWidth)
-
Y finalmente en el método IBACtion agrego
progressBarWidth += your value
para aumentar automáticamente el ancho cada vez que el usuario toca un botón.
Puede hacer esto en Interface Builder:
1) Control-arrastre desde una vista de cuadro (por ejemplo, questionFrame) a la Vista principal, en la ventana emergente seleccione "Igual altura"
2) Luego vaya al inspector de tamaño del marco, haga clic en la restricción "Igual altura a Supervisar", configure el multiplicador en 0.7 y presione la tecla de retorno.
Verá que la restricción ha cambiado de "Altura igual a ..." a "Altura proporcional a ...".
Sé que ya hay una solución a esta pregunta, pero encontré una alternativa a este problema y tal vez podría ayudar a alguien.
Estaba teniendo problemas para configurar el marco de mi vista secundaria porque ciertos valores se referían a su posición dentro de la vista principal. Entonces, si no desea actualizar su marco cambiando todo el marco a través de CGRect, simplemente puede cambiar un valor del marco y luego actualizarlo.
// keep reference to you frames
var questionView = questionFrame.frame
var answerView = answerFrame.frame
// update the values of the copy
questionView.size.height = CGFloat(screenSize.height * 0.70)
answerView.size.height = CGFloat(screenSize.height * 0.30)
// set the frames to the new frames
questionFrame.frame = questionView
answerFrame.frame = answerView
Swift 3 y Swift 4:
myView.frame = CGRect(x: 0, y: 0, width: 0, height: 0)