वास्तव में ये उत्तर वास्तव में मेरे द्वारा उपयोग किए जाने वाले अंत के करीब हैं, लेकिन यह अलग होने के बाद से अलग से पोस्ट करेगा। मूल रूप से zoomToRect सही ढंग से काम नहीं करता है यदि गंतव्य ज़ूमस्केल वर्तमान के समान है।
आप स्क्रॉल करने की कोशिश कर सकते हैं लेकिन मुझे इसके साथ कोई भाग्य नहीं मिला।
इसके बजाय बस सामग्री ऑफसेट का उपयोग करें और इसे zoomRect.origin और घोंसला पर सेट करें जो एनीमेशन ब्लॉक में है।
[UIView animateWithDuration:duration
delay:0.f
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
if (sameZoomScale) {
CGFloat offsetX = zoomRect.origin.x * fitScale;
CGFloat offsetY = zoomRect.origin.y * fitScale;
[self.imageScrollView setContentOffset:CGPointMake(offsetX, offsetY)];
}
else {
[self.imageScrollView zoomToRect:zoomRect
animated:NO];
}
}
completion:nil];
मैं इस 'कभी-कभी विफल रहता हूं' केस मार रहा था, जो एनीमेशन को डिफ़ॉल्ट अवधि में चलाने का कारण बनता है। यह मामला तब होता है जब पिछले और लक्ष्य रेक्ट आकार मिलान होते हैं, यहां तक कि मूल के माध्यम से भी भिन्न होते हैं। यहां मेरा नया एनीमेशन कोड है, scrollRectToVisible लाइन जोड़ रहा है, और मैं अब इस असफल मामले को मार नहीं रहा हूं। [UIView एनिमेट विथ अवधि: 2 देरी: 0 विकल्प: UIViewAnimationOptionBeginFromCurrentState एनिमेशन:^{ [scrollView scrollRectToVisible: लक्ष्य एनिमेटेड: नहीं]; [scrollView ज़ूमट्रोक्ट: लक्ष्य एनिमेटेड: नहीं]; } पूरा होने: शून्य]; – fionbio
घास इसके महान nous !!! यह ठीक काम कर रहा है धन्यवाद –