I've been using CGAffineTransformMakeScale to scale a UIView. This scales it by it's default anchorPoint, which is (.5, .5) -- the center. I'd like to scale it so that it stretches towards the left, as if it were zooming towards the left. I can accomplish this by setting the anchorPoint to the right center. However, this causes problems with setting the frame, etc. Is there a better way to apply a scale transform like I want. I was thinking I could do it with a custom transform matrix, but I am no good with matrix math.
            Asked
            
        
        
            Active
            
        
            Viewed 1.0k times
        
    2 Answers
3
            Use anchorPoint, to get around the frame weirdness just store and reload it as in this answer.
        Community
        
- 1
 - 1
 
        Alastair Stuart
        
- 4,165
 - 3
 - 36
 - 33
 
1
            
            
        First run this code and you will have better understanding. Here lblLabel is my label, you can change accordingly. Also check CGPoint(x: 10, y: 98) and CGPoint(x: 10, y: 108) as par > your requirements. This will animate from Top Left corner of label. Change anchor point and position as par your requirements.
self.lblLabel.layer.anchorPoint = CGPoint(x: 0.0,y :0.0)
        self.lblLabel.layer.position = CGPoint(x: 10, y: 98)
        lblLabel.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
        UIView.animate(withDuration: 1.0) {
             self.lblLabel.layer.position = CGPoint(x: 10, y: 108)
            self.lblLabel.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
        }
        Aklesh Rathaur
        
- 1,837
 - 18
 - 19