Establezca una transformación de escala UIView sin afectar otras transformaciones.

Tengo una vista UIV que networkinguzco al tocarla y escalar una copy de security cuando el toque finaliza o se cancela.

Había escalado la vista de esta manera

Reducir proporcionalmente:

CGAffineTransform transform = CGAffineTransformMakeScale(0.95, 0.95); self.transform = transform; 

Aumentar proporcionalmente:

 CGAffineTransform transform = CGAffineTransformMakeScale(1.0, 1.0); self.transform = transform; 

Esto no preserva ninguna otra transformación. Sé que puedo usar esto para preservar las transformaciones antiguas:

Reducir proporcionalmente:

 CGAffineTransform transform = CGAffineTransformScale(self.transform, 0.95, 0.95); self.transform = transform; 

Aumentar proporcionalmente:

 CGAffineTransform transform = CGAffineTransformScale(self.transform, 1.0, 1.0); self.transform = transform; 

Pero, por supuesto, aquí la escala no tiene ningún efecto; además, existe el potencial de tener animaciones de escala acumulativa aplicadas. Básicamente, quiero una forma de aplicar la transformación de escala absolutamente sin afectar a ninguna otra transformación. ¿Hay alguna forma de hacer esto? No creo usar 1.0 / 0.95 para el factor de escala, porque es posible que la vista pueda recibir dos toques antes de que se cancele o finalice.

Creo que estoy haciendo lo mismo que esta pregunta: aplicar solo el componente de escala de un CGAffineTransform a una UIView pero no creo que las respuestas aquí funcionen para mí.

Estoy apuntando a iOS 7 y superior.

No estoy seguro si esto es exactamente lo que estás buscando, pero para mí necesito que la escala sea absolutamente constante todo el time, así que modifico la matriz directamente.

 CATransform3D transform = layer.transform; if (makeSmaller) { // Scale to 0.9 transform.m11 = 0.9f; transform.m22 = 0.9f; } // Cell needs to grow to normal size else if (restreToOriginal) { // Scale to 1.0 again transform.m11 = 1.0f; transform.m22 = 1.0f; } // Set the desinetworking Y translation transform.m42 = desinetworkingffset; layer.transform = transform;