2015-02-11 7 views
8

मेरी स्टोरीबोर्ड में UIImageView है जो स्वचालित रूप से ऑटोलायआउट बाधाओं द्वारा निर्धारित और स्केल किया जाता है।ऑटोलायआउट के बाद UIImageView आकार कैसे प्राप्त किया जाए?

जब आवेदन चलाता है, इस UIImageView ठीक से आकार दिया और करने के लिए डिवाइस स्क्रीन आकार और autolayout बाधाओं अनुसार स्थिति में है।

के बाद मैं UIImageView फ्रेम कैसे प्राप्त कर सकता हूं यह स्क्रीन पर प्रदर्शित होता है? आम UIImageView.bounds और UIImageView.frame मूल्यों मूल मूल्यों जो स्टोरीबोर्ड में इस्तेमाल किया गया है और नई UIImageView आकार को प्रतिबिंबित नहीं करता लौटने।

+0

कहाँ कोड है कि 'frame' हो जाता रखा है? – sikhapol

+0

इन - (शून्य) viewWillAppear: (BOOL) मुख्य ViewController से एनिमेटेड। – Kibernetik

+0

महान सवाल, tbaranes के जवाब ने वास्तव में मेरी मदद की। आपको "फ्रेम" शब्द के साथ-साथ "आकार" शब्द शामिल करने के लिए प्रश्न को अद्यतन करना चाहिए, इसलिए लोगों को बाधाओं के बाद सही उत्पत्ति को कैसे प्राप्त किया जाए, यह पता लगाने की कोशिश कर रहे हैं कि यह प्रश्न भी मिल सकता है। – TMin

उत्तर

15

आदेश का आकार बदलने के बाद अपने UIImageView का सही फ्रेम/सीमा पाने के लिए, आप पहली बार [yourImageView layoutIfNeeded] का उपयोग कर कि लेआउट अद्यतन करने के लिए स्वत: लेआउट पूछने की जरूरत है। जो आपकी बाधाओं को हल करेगा और आपके yourImage.bounds अपडेट करेगा।

[myImageView layoutIfNeeded]; 
NSLog(@"w: %f, h: %f", myImageView.bounds.size.width, myImageView.bounds.size.height); 
+0

बहुत बहुत धन्यवाद! आपकी टिप्पणी ने मेरा प्रश्न हल किया। – Kibernetik

+0

दुर्भाग्य से यह विभिन्न आकार वर्गों के लिए काम नहीं कर रहा है। – khunshan

+0

क्या होगा यदि मैं उस लेआउट परिवर्तन को एनिमेट करना चाहता हूं और साथ ही एनीमेशन के बाद अंत फ्रेम को जानता हूं? – DanSkeel

7

चेक इन तरीकों:

- (void)viewWillAppear:(BOOL)animated { 
// view is about to be added to hieararchy 
} 

- (void)viewDidAppear:(BOOL)animated { 
// view was added 
} 

- (void)viewDidLayoutSubviews { 
// VC just laid off its views 
} 
+1

हां, - (शून्य) viewDidLayoutSubviews अद्यतन आयाम प्राप्त करने के लिए उचित स्थान है और प्रस्ताव को हल भी किया गया है। आपका बहुत बहुत धन्यवाद! – Kibernetik

+2

@ किबर्नेटिक, ** सुपर ** कॉल करना न भूलें! – orkenstein

+1

आपके नोट के लिए धन्यवाद! – Kibernetik

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