2010-08-16 7 views
16

मैं इसे स्केलिंग के बिना एक UIButton की imageView संपत्ति बारी बारी से करने का प्रयास कर रहा हूँ स्केल नहीं। व्यापक की तुलना में यह लंबा है - - लेकिन एक बार जगह छवि उन आयाम रखने के लिए बढ़ाया जा रहा है में घुमाया - मुझे एक बहुत squished छवि के साथ छोड़ने के विचाराधीन छवि 24x18 है। मेरे द्वारा इसे कैसे रोका जा सकता है?कैसे एक UIButton में imageView को घुमाने के लिए, और यह

नीचे मेरी कोड ..

-(IBAction)rotateButton 
{ 
NSLog(@"Rotating button"); 

[UIView beginAnimations:@"rotate" context:nil]; 
[UIView setAnimationDuration:.5f]; 
if(CGAffineTransformEqualToTransform(button.imageView.transform, CGAffineTransformIdentity)) 
{ 
    button.imageView.transform = CGAffineTransformMakeRotation(M_PI/2); 
} else { 
    button.imageView.transform = CGAffineTransformIdentity; 
} 
[UIView commitAnimations]; 
} 

यह ऐसा नहीं पड़ता अगर मैं लागू button.imageView के बजाय बटन को बदलने है, इसलिए मैं यह imageView की संपत्ति है अनुमान लगा रहा हूँ कि मैं मैं सही सेटिंग नहीं कर रहा हूँ।

आपका सुराग & boos बहुत स्वागत

एम

+0

Fwiw, मैं squished मिलता है नतीजा तब भी जब बटन पर ट्रांसफॉर्म लागू होता है। और यह केवल डिवाइस पर सिम्युलेटर पर नहीं होता है। – rounak

उत्तर

1

मैं UIButtons की UIImageView संपत्ति देखा है बहुत अजीब तरीके से व्यवहार कर रहे हैं - ऐसा लगता है कि उनके गुणों में से कुछ केवल-पढ़ने के UIViewContentMode सहित, यह सेटिंग है कि आप यहां किस बारे में बात कर रहे हैं।

मुझे मिला सबसे अच्छा समाधान है "एक छवि युक्त बटन" एक अलग UIImageView के साथ सेटअप, और इसके ऊपर बैठे खाली कस्टम स्टाइल वाले UIButton की नकल करना। छवि को प्रबंधित करने के लिए आपको बहुत अधिक लचीलापन देता है।

+1

मुझे सामान्य UIImageViews के साथ एक ही समस्या थी और जब आप घूमते हैं तो सामग्री पागल हो जाती है (क्या नहीं होना चाहिए) सामग्री को "केंद्र" में सेट करके तय किया गया था - इस अंतर्दृष्टि के लिए धन्यवाद! – Adam

47

कहीं भी देखने के दृश्य में प्रारंभिक प्रारंभ पर निम्नलिखित कोड लागू करें। ये सहायता करेगा। जवाब यह है कि आप ऊपर हो गया एक सही जवाब :)

button.imageView.clipsToBounds = NO; 
button.imageView.contentMode = UIViewContentModeCenter; 
+2

वह मेरे लिए समस्या हल हो! –

+0

यह पूरी तरह से काम करता है! –

+1

धन्यवाद @Nikita यह मेरे लिए काम करता है! – Desmond

1

मैं दौरान layoutSubviews काम किया उपवर्गीकरण UIButton दूर करने के लिए है कि बदलना, इस तरह मिल गया है नहीं है:

class RotatableImageButton: UIButton { 
    override func layoutSubviews() { 
     let originalTransform = imageView?.transform 
     imageView?.transform = CGAffineTransformIdentity 
     super.layoutSubviews() 
     if let originalTransform = originalTransform { 
      imageView?.transform = originalTransform 
     } 
    } 
} 
+0

मेरे लिए अच्छा काम करता है! – Mete

संबंधित मुद्दे