UIScrollView ไม่เลื่อน


128

ฉันUIScrollViewมีหลายอันที่มีUIImageViews, UILabels ฯลฯ ... ป้ายกำกับนั้นยาวกว่านั้นUIScrollViewมาก แต่เมื่อฉันเรียกใช้แอพฉันไม่สามารถคลิกและเลื่อนลง ...

เหตุใดจึงเป็นเช่นนี้

ขอบคุณ


ใหม่ 3/26/2013 ฉันสะดุดกับวิธีที่ง่ายกว่าในการทำสิ่งนี้โดยไม่ต้องใช้รหัส (การตั้งค่าขนาดเนื้อหา) stackoverflow.com/a/15649607/1705353
Dickey Singh

คำตอบ:


169

เป็นเรื่องดีเสมอที่จะแสดงข้อมูลโค้ดที่สมบูรณ์

// in viewDidLoad (if using Autolayout check note below):

UIScrollView *myScrollView;
UIView *contentView;
// scrollview won't scroll unless content size explicitly set

[myScrollView addSubview:contentView];//if the contentView is not already inside your scrollview in your xib/StoryBoard doc

myScrollView.contentSize = contentView.frame.size; //sets ScrollView content size

Swift 4.0

let myScrollView
let contentView

// scrollview won't scroll unless content size explicitly set

myScrollView.addSubview(contentView)//if the contentView is not already inside your scrollview in your xib/StoryBoard doc

myScrollView.contentSize = contentView.frame.size //sets ScrollView content size

ฉันไม่ได้พบวิธีการตั้งค่า contentSize ใน IB ( ณ Xcode 5.0)

หมายเหตุ: หากคุณใช้ Autolayout สถานที่ที่ดีที่สุดในการวางรหัสนี้อยู่ใน-(void)viewDidLayoutSubviewsวิธีการ


12
อย่าลืมตั้งค่าmyScrollView.delegate = selfหากยังไม่ทำงานคำตอบด้านล่างนี้จะมีคำแนะนำที่ดี (ไปที่ xib / StoryBoard ของคุณและตรวจสอบให้แน่ใจว่า "AutoLayout" ปิดใช้งานอยู่) เคล็ดลับ: คุณสามารถรวม<UIScrollViewDelegate>ไว้ในไฟล์. h ของคุณหากคุณต้องการทำสิ่งต่าง ๆ เช่นเลื่อน UIScrollView ของคุณโดยทางโปรแกรม
Albert Renshaw

1
@AlbertRenshaw คุณควรเพิ่มคำตอบเพื่อที่ฉันจะได้ให้ +1: AutoLayout เป็นปัญหากับฉัน .... ทำให้ฉันเสียสติเป็นเวลา 4 ชั่วโมง
ตรรกวิทยา

2
การใส่รหัสviewDidLayoutSubviewsทำให้มันใช้งานได้สำหรับฉัน
Amr Lotfy

สำหรับฉันปัญหาคือมันไม่จำเป็นต้องเลื่อนเพราะทุกอย่างพอดีบนหน้าจอ
Daniel Springer

122

หากคุณไม่สามารถเลื่อนมุมมองแม้หลังจากที่คุณตั้งcontentSizeอย่างถูกต้องตรวจสอบให้แน่ใจว่าคุณยกเลิกการเลือก "ใช้ AutoLayout" ใน Interface Builder -> ตัวตรวจสอบไฟล์


164
อีกทางหนึ่งคุณสามารถตั้งค่าcontentSizeในviewDidLayoutSubviews:และมันจะถูกนำไปใช้หลังจาก autolayout เสร็จสมบูรณ์
Chris Vasselli

2
@ "Chris Vasselli" ทำให้ปัญหาของฉันแย่ลง .. GR8 .. :-)
Ayaz

3
ความคิดเห็นของคริสน่าจะเป็นคำตอบที่แยกต่างหาก!
ninjaneer

1
ขอบคุณ Chris Vasselli มาก! เมื่อเปิดใช้งานเค้าโครงอัตโนมัติจะไม่ทำงานใน viewDidLoad แต่ใช้กับ viewDidLayoutSubviews!
Romain

1
ว้าวฉันไม่เคยสังเกตเห็นความคิดเห็นทั้งหมดเหล่านี้มาก่อน! ดีใจที่ฉันสามารถช่วยคุณออกมามากมาย! ฉันเพิ่งโพสต์คำตอบแยกต่างหากดังนั้นหวังว่าจะหาได้ง่ายขึ้น
Chris Vasselli

68

คุณต้องตั้งค่าcontentSizeคุณสมบัติของมุมมองเลื่อนเพื่อให้เลื่อนได้อย่างถูกต้อง

หากคุณกำลังใช้ autolayout คุณจะต้องตั้งค่าcontentSizeในviewDidLayoutSubviewsเพื่อให้มันจะนำมาใช้หลังจากที่เสร็จสมบูรณ์ autolayout

รหัสอาจมีลักษณะเช่นนี้:

-(void)viewDidLayoutSubviews
{
    // The scrollview needs to know the content size for it to work correctly
    self.scrollView.contentSize = CGSizeMake(
        self.scrollContent.frame.size.width,
        self.scrollContent.frame.size.height + 300
    );
}

ขอบคุณตัน .. สิ่งนี้ได้ผลเพราะเหตุผลบางอย่างแม้ว่าฉันจะตั้งค่าcontentSizeเป็นขนาดcontentViewเท่าขนาด scrollView และ contentView ดูเหมือนว่าจะได้รับการตั้งค่าเหมือนกัน แต่การตั้งค่าความสูงของcontentSizeถึงค่ามากกว่าความสูงของcontentViewมันก็ใช้งานได้
Skywalker

viewDidLayoutSubviewsสามารถเรียกหลาย ๆ ครั้งในช่วงอายุการใช้งานดังนั้นคุณจึงเสี่ยงที่จะเพิ่มความสูงได้มากกว่าที่คาดไว้
anon_nerd

@anon_nerd เพียงแค่ตรวจสอบว่ามันถูกเรียกแล้วและเพิ่มความสูงหากไม่ได้
Daniel Springer

45

คำตอบข้างต้นถูกต้อง - เพื่อให้การเลื่อนเกิดขึ้นจำเป็นต้องกำหนดขนาดเนื้อหา

หากคุณใช้ตัวสร้างส่วนต่อประสานวิธีที่ประณีตในการทำเช่นนี้ก็คือการใช้คุณสมบัติของรันไทม์ที่ผู้ใช้กำหนด เช่น:

ป้อนคำอธิบายรูปภาพที่นี่


นี่ไม่ได้ทำอะไรให้ฉันเลย
coolcool1994

4
อ๊ะรูปภาพแสดง {0, 0} แต่แน่นอนว่าคุณต้องใส่ตัวเลขมากพอ . วิธีการนี้จะใช้งานได้กับมุมมองแบบง่ายที่คุณทราบขนาดเนื้อหาก่อนหน้าเท่านั้น . . (อันที่จริงแล้วสำหรับมุมมองที่ซับซ้อนฉันขอแนะนำให้ใช้โค้ดบริสุทธิ์)
Jasper Blues

แฮ็คน้อยกว่าทำโปรแกรม ขอบคุณ!
Jake Stoeffler

1
@ JakeStoeffler ยินดีต้อนรับ! :) เมื่อใช้ IB ฉันชอบเก็บค่าทั้งหมดไว้ที่นั่น (ไม่แยกส่วน) แต่เมื่อสิ่งต่าง ๆ มีความซับซ้อน (วิดเจ็ตมุมมองที่นำกลับมาใช้ใหม่ได้, อะแดปเตอร์โมเดล, การจัดการเลเยอร์; CAAnimations ฯลฯ ) ดังนั้นฉันจึงชอบมุมมองเชิงโปรแกรมอย่างเต็มที่ . . คล่องแคล่วมากขึ้น
Jasper Blues

ฉันลองสิ่งนี้ทำงานเมื่อมุมมองปรากฏขึ้น แต่เมื่อเปลี่ยนการวางแนวเนื้อหาขนาดที่กำหนดไว้ในหน้าจอด้านบนจะถูกละเว้นและบันทึกของฉันบอกว่า contentSize ถูกตั้งค่ากลับเป็น 0,0 ความคิดใดที่จะแก้ไขได้อย่างไร
Shoogle

40

พยายามปรับขนาดเนื้อหาเป็นตัวเลขขนาดใหญ่ ฉันไม่เข้าใจว่าเพราะเหตุใดมุมมองการเลื่อนของฉันจึงไม่เลื่อนแม้ว่าขนาดเนื้อหาของมันจะใหญ่กว่าขนาดควบคุม ฉันค้นพบว่าถ้าขนาดเนื้อหาเล็กกว่าที่ต้องการก็ไม่สามารถใช้งานได้

self.scrollView.contentSize = CGSizeMake(2000, 2000);

แทนที่จะเป็น 2000 คุณสามารถใส่ตัวเลขขนาดใหญ่ของคุณเอง และถ้าใช้งานได้แสดงว่าขนาดเนื้อหาของคุณไม่ใหญ่พอเมื่อคุณปรับขนาด

ผู้รับมอบสิทธิ์ไม่จำเป็นสำหรับการเลื่อนดูการทำงาน


2
Genius - วิธีง่ายๆในการตรวจสอบสิ่งที่เกิดขึ้น ขอบคุณมัด!
Chimp บ้า

13

ตรวจสอบให้แน่ใจว่าคุณมีคุณสมบัติ contentSize ของชุดมุมมองเลื่อนเป็นขนาดที่ถูกต้อง (เช่นขนาดใหญ่พอที่จะรวมเนื้อหาทั้งหมดของคุณ)


1
ฉันต้องทำสิ่งนี้โดยทางโปรแกรมหรือไม่ หรือฉันสามารถทำได้ใน IB?
ทำเครื่องหมาย

หากคุณใช้ IB คุณสามารถตั้งค่าได้จากที่นั่น - ดูด้านล่าง . (คำตอบแยกต่างหากดังนั้นฉันสามารถรวมภาพ)
Jasper Blues

7

ยกเลิกการเลือก 'Use Autolayout' สำหรับฉัน

สภาพแวดล้อม: xCode 5.0.2 สตอรี่บอร์ด ios7


5

ในกรณีของฉันฉันต้องตั้งค่าdelaysContentTouchesเป็นจริงเพราะวัตถุใน scrollView ทั้งหมดจับเหตุการณ์สัมผัสและจัดการตัวเองมากกว่าปล่อยให้ scrollView ตัวเองจัดการมัน


ฉันมีปัญหาเดียวกัน ปัญหาสำหรับฉันคือการเปลี่ยนความล่าช้าเนื้อหาเป็นจริงคุณจะจบลงด้วยภาพวาดคุณภาพต่ำด้วยดินสอแอปเปิ้ล แต่นี่คือกรณีขอบ :) ในกรณีส่วนใหญ่จะแก้ปัญหา
RomOne

4

ชุด contentSizeคุณสมบัติของUIScrollviewในViewDidLayoutSubviewsวิธี บางสิ่งเช่นนี้

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    scrollView.contentSize = CGSizeMake(view.frame.size.width, view.frame.size.height)
}

3

แนวคิดของสาเหตุที่เลื่อนดูไม่ได้เนื่องจากคุณตั้งค่าขนาดเนื้อหาสำหรับการเลื่อนน้อยกว่าขนาดของมุมมองเลื่อนซึ่งไม่ถูกต้อง คุณควรตั้งค่าขนาดเนื้อหาให้ใหญ่กว่าขนาดของมุมมองการเลื่อนเพื่อเลื่อนดูในขณะที่เลื่อน

แนวคิดเดียวกันกับการซูมคุณตั้งค่าขั้นต่ำและค่าสูงสุดสำหรับการซูมซึ่งจะนำไปใช้ผ่านการดำเนินการซูม

ยินดีต้อนรับ :)


3

นอกจากนี้เล็กน้อยหนึ่งข้อทั้งหมดข้างต้นเป็นสาเหตุที่แท้จริงที่ทำให้มุมมองเลื่อนของคุณอาจไม่เลื่อน แต่บางครั้งก็ไม่สนใจสิ่งนี้อาจเป็นเหตุผลพิเศษเมื่อเพิ่ม scrollview ผ่านรหัสและไม่ใช่ IB คุณอาจเพิ่มการชมย่อยลงในมุมมองพาเรนต์ scrollview สิ่งนี้ทำให้มุมมองย่อยไม่เลื่อน

และเก็บชุดขนาดเนื้อหาและใหญ่กว่าเฟรมมุมมองหลัก (duhh !!)


3

ฉันทำให้มันใช้งานได้ในการลองครั้งแรกของฉัน ด้วยเลย์เอาต์อัตโนมัติและทุกอย่างไม่มีรหัสเพิ่มเติม จากนั้นดูคอลเลคชั่นไปกล้วยเวลาทำงานล้มเหลวฉันไม่พบสิ่งผิดปกติดังนั้นฉันจึงลบและสร้างใหม่ (ฉันใช้ Xcode 10 Beta 4 มันให้ความรู้สึกเหมือนเป็นแมลง) แล้วการเลื่อนก็หายไป มุมมองคอลเล็กชันทำงานได้อีกครั้ง!

หลายชั่วโมงต่อมา .. นี่คือสิ่งที่แก้ไขสำหรับฉัน ฉันมีเค้าโครงต่อไปนี้:

UIView

  • พื้นที่ปลอดภัย
  • เลื่อนดู
    • มุมมองเนื้อหา

มันอยู่ในข้อ จำกัด พื้นที่ปลอดภัยถูกกำหนดโดยระบบโดยอัตโนมัติ ในกรณีที่เลวร้ายที่สุดให้ลบข้อ จำกัด ทั้งหมดสำหรับการเลื่อนและมุมมองเนื้อหาและไม่มีการรีเซ็ต / สร้าง IB สำหรับคุณ ทำให้มันทำงานด้วยตนเอง

  • สำหรับการเลื่อนดูฉันทำ: จัดแนวต่อท้าย / บนพื้นที่ปลอดภัย ความกว้าง / ความสูงเท่ากับพื้นที่ปลอดภัยความสูงไปยังพื้นที่ปลอดภัย
  • สำหรับมุมมองเนื้อหาที่ฉันทำ: จัดแนวต่อท้าย / นำหน้า / บน / ล่างให้อยู่ในการกำกับดูแล (มุมมองเลื่อน)

โดยทั่วไปแนวคิดคือการมีการเลื่อนดูเนื้อหาที่เหมาะสมเลื่อนซึ่งเป็นพื้นที่ปลอดภัยที่เหมาะสม

แต่มันไม่ทำงาน มุมมองเนื้อหาพลาดความสูง ฉันพยายามทั้งหมดที่ฉันสามารถและเป็นคนเดียวที่ทำเคล็ดลับได้รับเนื้อหามุมมองความสูงสร้างการควบคุมการลากดูเนื้อหา .. กับตัวเอง ที่กำหนดความสูงคงที่ซึ่งได้รับการคำนวณค่าจากขนาดของตัวควบคุมมุมมอง (กำหนดเป็นรูปแบบอิสระนานกว่าจอแสดงผลจริงเพื่อให้มีการสัมภาษณ์ทั้งหมดของฉัน) และในที่สุดมันก็ทำงานได้อีกครั้ง!


คุณยินดีอย่างมาก! ฉันรู้ว่าคุณรู้สึกอย่างไร .. ;-)
Michele Dall'Agata

Thaaaaks ฉันใช้เวลาหลายชั่วโมงและปัญหานี้แก้ไขได้
Andoni Da Silva

3

หากคุณได้รับข้อความ (IOS8 / swift) ที่viewDidLayoutSubviewsไม่มีอยู่ให้ใช้สิ่งต่อไปนี้แทน

override func viewDidAppear(animated: Bool)

สิ่งนี้แก้ไขได้สำหรับฉัน


2

บางสิ่งที่ไม่เคยพูดถึงมาก่อน!

ตรวจสอบให้แน่ใจว่าเต้าเสียบของคุณเชื่อมต่ออย่างถูกต้องกับ scrollView! มันควรจะมีวงกลมที่เต็มไปด้วยแม้ว่าแม้ว่าคุณจะได้วงกลมที่เต็มไปด้วย scrollView อาจไม่ได้รับการเชื่อมต่อ - ดังนั้นตรวจสอบอีกครั้ง! โฮเวอร์เหนือวงกลมและดูว่า scrollview จริงได้รับการเน้นหรือไม่! (นี่เป็นกรณีสำหรับฉัน)

//Connect below well to the scrollView in the storyBoard
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

2

หลายครั้งที่รหัสถูกต้องถ้าคุณได้ทำตามบทช่วยสอน แต่สิ่งที่ผู้เริ่มต้นหลายคนไม่ทราบก็คือ scrollView จะไม่เลื่อนตามปกติผ่านตัวจำลอง มันควรที่จะเลื่อนเมื่อคุณกดลงบน mousepad และเลื่อนพร้อมกัน ผู้ใช้XCode / Swift / Obj-C ที่มีประสบการณ์จำนวนมากนั้นคุ้นเคยกับการทำสิ่งนี้และพวกเขาไม่รู้ว่ามันจะถูกมองข้ามโดยผู้เริ่มต้น Ciao :-)

@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
    super.viewDidLoad()
    view.addSubview(scrollView)
    // Do any additional setup after the view
}

override func viewWillLayoutSubviews(){
    super.viewWillLayoutSubviews()
    scrollView.contentSize = CGSize(width: 375, height: 800)
}

รหัสนี้จะทำงานได้อย่างสมบูรณ์แบบตราบใดที่คุณทำในสิ่งที่ฉันพูดไว้ข้างต้น


1

หากไม่มีวิธีการอื่นใดที่เหมาะกับคุณให้ตรวจสอบอีกครั้งว่ามุมมองการเลื่อนของคุณเป็นUIScrollViewอินเทอร์เฟซผู้สร้าง

เมื่อถึงจุดหนึ่งในช่วงไม่กี่วันที่ผ่านมาฉันUIScrollView เปลี่ยนชนิดตามธรรมชาติเป็น a UIViewแม้ว่าคลาสของมันจะพูดUIScrollViewในสารวัตร ฉันกำลังใช้Xcode 5.1 (5B130a)ฉันใช้

คุณสามารถสร้างมุมมองเลื่อนใหม่และคัดลอกการวัดการตั้งค่าและข้อ จำกัด จากมุมมองเก่าหรือคุณสามารถเปลี่ยนมุมมองของคุณเป็น a UIScrollViewในxibไฟล์ได้ด้วยตนเอง ฉันทำการเปรียบเทียบและพบความแตกต่างดังต่อไปนี้:

เดิม:

<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" directionalLockEnabled="YES" bounces="NO" pagingEnabled="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wsk-WB-LMH">
...
</scrollView>

หลังจากเปลี่ยนประเภทตามธรรมชาติแล้ว:

<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" customClass="UIScrollView" id="qRn-TP-cXd">
...
</view>

ดังนั้นฉันจึงแทนที่<view>บรรทัดด้วยต้นฉบับของฉัน<scrollView>บรรทัด

ฉันยังเปลี่ยนแท็กใกล้มุมมองที่มี</view></scrollView>

ตรวจสอบให้แน่ใจว่าเก็บ id เหมือนกับมุมมองปัจจุบันในกรณีนี้: id = "qRn-TP-cXd"

ฉันต้องล้าง xib ออกจากแคชของ Xcode ด้วยการลบข้อมูลที่ได้จากแอป:

  • Xcode->Window->Organizer->Projectsเลือกโครงการของคุณบนเส้นข้อมูลที่ได้รับคลิกลบ ...

หรือหากใช้อุปกรณ์:

  • Xcode->Window->Organizer->Deviceเลือกอุปกรณ์ของคุณ -> แอปพลิเคชันเลือกแอปของคุณคลิก (-)

ตอนนี้ทำความสะอาดโครงการและลบแอพออกจากโปรแกรมจำลอง / อุปกรณ์:

  • Xcode->Product->Clean
  • iOS Simulator/device->pressและกดapp->clickปุ่ม (X) เพื่อลบออก

จากนั้นคุณควรจะสามารถสร้างและเรียกใช้แอปของคุณและมีฟังก์ชันการเลื่อนอีกครั้ง

ป.ล. ฉันไม่ต้องตั้งค่าขนาดเนื้อหาของหน้าจอเลื่อนviewDidLayoutSubviewsหรือปิดเลย์เอาต์อัตโนมัติ แต่เป็น YMMV


1

หากคุณscrollViewเป็น subview ของcontainerViewบางชนิดแล้วให้แน่ใจว่าคุณอยู่ในกรอบหรือขอบเขตของscrollView containerViewฉันมีcontainerView.clipsToBounds = NOสิ่งใดที่ยังอนุญาตให้ฉันเห็น scrollView แต่เนื่องจากscrollViewไม่ได้อยู่ในขอบเขตของcontainerViewมันจะไม่ตรวจจับเหตุการณ์การสัมผัส

ตัวอย่างเช่น:

containerView.frame = CGRectMake(0, 0, 200, 200);
scrollView.frame = CGRectMake(0, 200, 200, 200);
[containerView addSubview:scrollView];
scrollView.userInteractionEnabled = YES;

คุณจะสามารถดู scrollView แต่จะไม่ได้รับการโต้ตอบจากผู้ใช้


1

เพิ่มรหัสต่อไปนี้ในการviewDidLayoutSubviewsทำงานสำหรับฉันด้วย Autolayout หลังจากลองคำตอบทั้งหมด:

- (void)viewDidLayoutSubviews
{
    self.activationScrollView.contentSize = CGSizeMake(IPHONE_SCREEN_WIDTH, 620);

}

//set the height of content size as required

1

เพิ่มUIScrollViewDelegateและเพิ่มรหัสต่อไปนี้ไปยังviewDidAppearวิธีการแก้ไขให้ฉัน

@interface testScrollViewController () <UIScrollViewDelegate>

-(void)viewDidAppear:(BOOL)animated {
    self.scrollView.delegate = self;
    self.scrollView.scrollEnabled = YES;
    self.scrollView.contentSize = CGSizeMake(375, 800);
}

1

ปัญหาของฉันได้รับการแก้ไขโดย:

  1. การตั้งค่า contentSize บน scrollView ให้มีความสูงมาก
  2. แต่ฉันก็ต้องแก้ไขข้อ จำกัด ด้านบนและ / หรือด้านล่างในมุมมองภายใน scrollView ซึ่งหมายความว่าตัวบ่งชี้การเลื่อนแสดงบนหน้าจอ แต่เนื้อหาไม่ได้เลื่อน

เมื่อฉันลบข้อ จำกัด ด้านบนและ / หรือด้านล่างที่ผูกไว้กับพื้นที่ปลอดภัยและ / หรือการกำกับดูแลมุมมองภายใน scrollView สามารถเลื่อนอีกครั้งและไม่คงที่ไปที่ด้านบนของหน้าจอ!

หวังว่าสิ่งนี้จะหยุดคนอื่นจากอาการปวดชั่วโมงกับปัญหานี้


1

อีกกรณีที่สนุก:

scrollview.superview.userInteractionEnabled ต้องเป็นจริง

ฉันเสียเวลา 2 + ชั่วโมงในการไล่ล่านี่แค่คิดออกว่า parent คือ UIImageView ซึ่งโดยธรรมชาติแล้ว userInteractionEnabled == false


0

หลังจากล้มเหลวด้วยคำตอบที่ให้ไว้ในหัวข้อนี้ฉันสะดุดกับบทความนี้ด้วยการแก้ปัญหา

มีสองสิ่งที่ไม่เข้าใจง่ายเกี่ยวกับการตั้งค่า scrollview ด้วยการชำระอัตโนมัติ:

  1. ข้อ จำกัด ที่คุณตั้งค่าเป็นระยะขอบระหว่าง contentview และ scrollview จะไม่มีผลกับขนาดของ contentview พวกเขาเป็นระยะขอบจริงๆ และเพื่อให้มันทำงาน contentview ควรมีขนาดคงที่
  2. เคล็ดลับสำหรับขนาดคงที่คือคุณสามารถกำหนดความกว้างของ contentview เท่ากับของพาเรนต์ของ scrollview เพียงเลือกมุมมองทั้งสองในต้นไม้ทางด้านซ้ายและเพิ่มข้อ จำกัด ความกว้างเท่ากัน

นี่คือส่วนสำคัญของบทความนั้น สำหรับคำอธิบายที่สมบูรณ์รวมถึงภาพประกอบลองดู


@PredragManojlovic มันจะได้รับทั่วไปมากขึ้นกว่านี้ได้อย่างไร นี่เป็นวิธีเดียวที่ฉันจะได้เลื่อนดูเพื่อให้ทำงานได้อย่างถูกต้องโดยใช้การจัดวางอัตโนมัติ
H. de Jonge

0

ฉันพบว่าปัญหา AutoLayout นี้ ... หากฉันViewControllerใช้UIViewแทนUIScrollViewชั้นเรียน ... จากนั้นเพิ่มUIScrollViewตัวเอง ... มันใช้งานได้


0

ฉันมีปัญหาเดียวกันใน IB

หลังจากตั้งค่าการนำหน้า, ต่อท้าย, ด้านบนและด้านล่างของ scrollView เป็น superView ฉันทำการเปลี่ยนแปลงต่อไปนี้เพื่อให้ containerView เลื่อนได้ซึ่งทำงานได้

ในการทำให้ scrollView เลื่อนบนทิศทางแนวนอนเท่านั้นให้ จำกัด ด้วย scrollview's centerY = ContainerView's centerY

และเพื่อให้สามารถเลื่อนในแนวตั้งได้ให้ centerView ของ scrollView = ContainerView ของ centerX

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.