2012-05-23 9 views
5

DrawRect'te bazı özel çizimler yaptığım bir görünüm var. Bu çizimler dinamiktir ve görünümün genişliğine ve yüksekliğine dayanır. Daha sonra, onu içeren görünüm ona bir dönüş dönüşümü uygular. Ancak bu dönüşüm, çizmemi çizmemi etkileyen çizimlerimdeki değerleri düzeltiyor gibi görünüyor.IOS görüntü dönüşümü kareyi değiştirir mi?

NSLog (@ "önce:% f,% f,% f,% f", button.frame.origin.x, button.frame.origin.y, button.frame.size.width, button.frame .size.height);

önce: 50.000000,100.000000,150.000000,50.000000 sonra: 65.849365,47.548096,118.301262,154.903809

bu doğru davranış mı yoksa yanlış dönüşümü uygulanarak am İşte

CGAffineTransform currentTransform = button.transform; 
    CGAffineTransform transformRotate = CGAffineTransformMakeRotation(degreesToRadians); 
    button.transform = transformRotate; 

    NSLog(@"after:%f,%f,%f,%f",button.frame.origin.x,button.frame.origin.y,button.frame.size.width,button.frame.size.height); 

çıkışı ?

cevap

12

UIView's frame property;


çerçeve

onun Superview koordinat sisteminde görünümün konumu ve boyutu açıklanmaktadır çerçeve dikdörtgen,.

mülkiyet kimlik dönüşümü, bu özellik tanımsız ve dolayısıyla görmezden gelinmelidir değeri olmadığında dönüşümü ise

@property(nonatomic) CGRect frame 

uyarı. amaçlandığı gibi o uyarıya rağmen


, işlerin. Bir dönüşüm (başka bir kimlik) uygulandığında, çerçeve genellikle orijinal görünümün yansıtma dikdörtgenine yol açar. Ancak yine de, uygulanan dönüşüm ile çerçeveyi gerçekten öğrenmek ve doğru şekilde almak için CGRectApplyAffineTransform'u kullanmak istiyorsanız bu uyarıyı göz ardı etmemelisiniz.