स्क्रॉलव्यू पर वर्टिकल स्क्रॉलिंग अनचेक करने के लिए आईबी में एक विकल्प है, लेकिन यह काम नहीं करता है।
स्क्रॉलव्यू को केवल क्षैतिज रूप से स्क्रॉल करने के लिए कैसे सेट किया जा सकता है, और आईबी के बजाय कोड में लंबवत नहीं है?
स्क्रॉलव्यू पर वर्टिकल स्क्रॉलिंग अनचेक करने के लिए आईबी में एक विकल्प है, लेकिन यह काम नहीं करता है।
स्क्रॉलव्यू को केवल क्षैतिज रूप से स्क्रॉल करने के लिए कैसे सेट किया जा सकता है, और आईबी के बजाय कोड में लंबवत नहीं है?
जवाबों:
स्क्रॉल करें की ऊंचाई पर सामग्री की ऊंचाई सेट करने का प्रयास करें। फिर ऊर्ध्वाधर स्क्रॉल को अक्षम किया जाना चाहिए क्योंकि लंबवत स्क्रॉल करने के लिए कुछ भी नहीं होगा।
scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,scrollView.frame.size.height);
iOS7 के बाद से:
पहला: सामग्री का आकार चौड़ाई आपके स्क्रॉलव्यू की चौड़ाई के बराबर होना चाहिए
दूसरा: आपके initWithNibName में:
self.automaticallyAdjustsScrollViewInsets = NO;
बस।
हाँ, pt2ph8 का उत्तर सही है,
लेकिन अगर किसी अजीब कारण से आपकी सामग्री UIScrollView से अधिक होनी चाहिए, तो आप UIScrollView प्रोटोकॉल विधि को लागू करने वाले ऊर्ध्वाधर स्क्रॉल को अक्षम कर सकते हैं
-(void)scrollViewDidScroll:(UIScrollView *)aScrollView;
बस इसे अपने UIViewController में जोड़ें
float oldY; // here or better in .h interface
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
[aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, oldY)];
// or if you are sure you wanna it always on top:
// [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, 0)];
}
उपयोगकर्ता द्वारा आपके UIScrollView को स्क्रॉल करने पर यह केवल विधि कहलाती है, और ऐसा करने से आप इसकी सामग्री को हमेशा समान रखते हैं।
float oldY;
उपरोक्त कोड की तरह पुरानी। चर फ़ाइल को घोषित न करें । यह एक सी-स्टाइल वैरिएबल सिंबल है प्रति एप्लिकेशन के लिए, वेरिएबल MUST को कंट्रोलर क्लास के उदाहरण सदस्य के रूप में घोषित किया जाना चाहिए।
निम्न विधि शामिल करें
-(void)viewDidLayoutSubviews{
self.automaticallyAdjustsScrollViewInsets = NO;
}
और स्क्रॉल दृश्य की चौड़ाई के बराबर स्क्रॉल दृश्य की सामग्री आकार चौड़ाई सेट करें।
आपको किस दिशा में चाहिए यह अक्षम करने के लिए आपको सामग्री आकार में 0 पास करना होगा।
ऊर्ध्वाधर स्क्रॉलिंग को अक्षम करने के लिए
scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,0);
क्षैतिज स्क्रॉलिंग को अक्षम करने के लिए
scrollView.contentSize = CGSizeMake(0,scrollView.contentSize.height);
मैंने ऊर्ध्वाधर स्क्रॉलिंग को अक्षम करने के लिए सामग्री आकार को अपडेट किया, और स्क्रॉल करने की क्षमता अभी भी बनी हुई है। फिर मुझे पता चला कि मुझे पूरी तरह से स्क्रॉल को अक्षम करने के लिए, ऊर्ध्वाधर उछाल को भी अक्षम करने की आवश्यकता है।
शायद इस समस्या वाले लोग भी हैं।
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
[aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x,0)];
}
आपने पुष्टि की होगी UIScrollViewDelegate
aScrollView.delegate = self;
बस y को हमेशा शीर्ष पर रखें। UIScrollViewDelegate के साथ अनुरूप होना चाहिए
func scrollViewDidScroll(scrollView: UIScrollView) {
scrollView.contentOffset.y = 0.0
}
यह स्क्रॉलिंग के डिक्लेरेशन / एक्सेलेरेशन प्रभाव को बनाए रखेगा।
IOS 11 पर कृपया निम्नलिखित जोड़ने के लिए याद रखें, यदि आप एक स्क्रॉलव्यू बनाने में रुचि रखते हैं जो एक सुरक्षित कंपनी के बजाय स्क्रीन सीमा से चिपक जाता है।:
if (@available(iOS 11.0, *)) {
[self.scrollView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
}
से iOS11 एक निम्नलिखित संपत्ति का उपयोग कर सकते
let frameLayoutGuide: UILayoutGuide
आप के लिए बाधाओं को सेट करते हैं frameLayoutGuide.topAnchor और frameLayoutGuide.bottomAnchor कुछ का एक ही एंकर को subview अपने की scrollview तो लंबवत स्क्रॉल अक्षम कर दिया जाएगा और की ऊंचाई scrollview अपने subview की ऊंचाई के बराबर हो जाएगा।
सबसे स्पष्ट समाधान आपके उपवर्ग में y- समन्वय परिवर्तनों को रोकना है।
override var contentOffset: CGPoint {
get {
return super.contentOffset
}
set {
super.contentOffset = CGPoint(x: newValue.x, y: 0)
}
}
स्थितियों में यह एकमात्र उपयुक्त समाधान है:
बहुत सारे उत्तरों में contentOffset
0. से सेटिंग शामिल है। मेरे पास एक ऐसा मामला था जिसमें मैं स्क्रॉलव्यू के अंदर का दृश्य केंद्रित करना चाहता था। इसने मेरे लिए काम किया:
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
scrollView.contentOffset.y = -scrollView.contentInset.top
}