หน้าแรก > iPhone, UIScrollView > ปรับ ScrollView ให้เลื่อนทีละครึ่งหน้า

ปรับ ScrollView ให้เลื่อนทีละครึ่งหน้า

สวัสดีครับ

หลังจากหัดเขียน iPhone ก็เจอปัญหากับ ScrollView

ต้องการให้เลื่อนที่ละครึ่งหน้า แต่เมื่อใช้ pagingEnabled เมื่อเลื่อน ScrollView  Page จะเลื่อนที่ละหน้า…

พอลองทำก็เจอปัญหาหลายๆ อย่าง กระตุกบ้าง หยุดไม่ได้บ้าง

สุดท้ายก็ไปหาวิธีการได้ (จำเว็บไม่ได้)

สิ่งที่เราต้องทำคือ Implement Delegate Method ของ UIScrollView ที่ชื่อ

- (void) scrollViewDidScroll:(UIScrollView *)scrollView;

ซึ่งจะทำงานเมื่อเกิดการเลื่อน

ตัวอย่าง Code

สร้าง UIScrollView แล้วกำหนด pagingEnabled = YES ก่อนนะครับ

- (void) scrollViewDidScroll:(UIScrollView *)scrollView {

CGFloat offset = scrollView.contentOffset.x / 2;

CGAffineTransform transform = CGAffineTransformMakeTranslation(offset, 0);

[_contentController.view setTransform:transform];

}

เมื่อเกิดการเลื่อนก็ให้ใช้ AffineTransform transform เลื่อนส่วนที่เป็น Content (ในี่นี้จะเลื่อนที่ละครึ่งหน้า)

หลังจากลองใช้งานดูก็พบว่ามีปัญหานิดหน่อยครับ

คือเมื่อ Paging ทำงานจำนวน Page จะถูกคำนวณไว้ ซึ่งทำให้เราเลื่อนได้เท่ากับจำนวนหน้าที่คำนวณไว้

จากตัวอย่างถ้า เราทำไว้ 10 หน้าแล้วให้เลื่อนไปทีละครึ่งหน้าเราจะไปได้แค่หน้าที่ 5

วิธีแก้ไขง่ายๆ คือเพิ่มขนาดของ ContentView ขึ่้น 2 เท่าเราก็จะสามารถเลื่อนได้จนหน้าสุดท้ายครับ

Categories: iPhone, UIScrollView
  1. ยังไม่มีความเห็น
  1. No trackbacks yet.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Connecting to %s

Follow

Get every new post delivered to your Inbox.