บางคนสามารถอธิบายให้ฉันทราบได้ว่าคุณสมบัติ contentInset ในUIScrollView
อินสแตนซ์นั้นใช้ทำอะไร และอาจให้ตัวอย่าง
บางคนสามารถอธิบายให้ฉันทราบได้ว่าคุณสมบัติ contentInset ในUIScrollView
อินสแตนซ์นั้นใช้ทำอะไร และอาจให้ตัวอย่าง
คำตอบ:
มันตั้งระยะห่างของสิ่งที่ใส่เข้าไประหว่างมุมมองเนื้อหาและมุมมองเลื่อนล้อมรอบ
Obj-C
aScrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 7.0);
สวิฟท์ 5.0
aScrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 7.0)
นี่คือบทความอ้างอิงห้องสมุด iOSที่ดีเกี่ยวกับมุมมองเลื่อนที่มีภาพหน้าจอที่ให้ข้อมูล (รูปที่ 1-3) - ฉันจะทำซ้ำผ่านข้อความที่นี่:
_|←_cW_→_|_↓_
| |
---------------
|content| ↑
↑ |content| contentInset.top
cH |content|
↓ |content| contentInset.bottom
|content| ↓
---------------
_|_______|___
↑
(cH = contentSize.height; cW = contentSize.width)
มุมมองเลื่อนล้อมรอบมุมมองเนื้อหารวมถึงช่องว่างใด ๆ ที่ระบุไว้โดยเนื้อหาที่ระบุ
padding
คุณสมบัติCSS
ในขณะที่คำตอบของ jball เป็นคำอธิบายที่ดีเลิศเกี่ยวกับการแทรกเนื้อหา แต่ก็ไม่ได้ตอบคำถามว่าจะใช้เมื่อไร ฉันจะยืมจากไดอะแกรมของเขา:
_|←_cW_→_|_↓_
| |
---------------
|content| ↑
↑ |content| contentInset.top
cH |content|
↓ |content| contentInset.bottom
|content| ↓
---------------
|content|
-------------↑-
นั่นคือสิ่งที่คุณจะได้รับเมื่อคุณทำ แต่ประโยชน์ของมันจะแสดงเฉพาะเมื่อคุณเลื่อน:
_|←_cW_→_|_↓_
|content| ← content is still visible
---------------
|content| ↑
↑ |content| contentInset.top
cH |content|
↓ |content| contentInset.bottom
|content| ↓
---------------
_|_______|___
↑
เนื้อหาแถวบนนั้นจะยังคงปรากฏให้เห็นเพราะยังอยู่ในกรอบของมุมมองเลื่อน วิธีคิดอย่างหนึ่งของการชดเชยยอดนิยมคือ "จะเลื่อนเนื้อหาลงไปที่มุมมองการเลื่อนเมื่อเราเลื่อนไปจนถึงด้านบนสุด"
หากต้องการดูสถานที่ที่ใช้งานจริงนี้ให้ดูที่แอพ Photos ในตัวบน iPhone แถบการนำทางและแถบสถานะโปร่งใสและเนื้อหาของมุมมองเลื่อนจะปรากฏอยู่ด้านล่าง นั่นเป็นเพราะกรอบของมุมมองเลื่อนขยายออกไปไกลขนาดนั้น แต่ถ้าไม่ใช่เพราะสิ่งที่ใส่เข้าไปในเนื้อหาคุณจะไม่สามารถมีส่วนบนของเนื้อหาที่ชัดเจนว่าแถบการนำทางโปร่งใสเมื่อคุณไปถึงด้านบนสุด
ส่วนแทรกเนื้อหาจะแก้ปัญหาการมีเนื้อหาที่อยู่ภายใต้ส่วนอื่น ๆ ของส่วนต่อประสานกับผู้ใช้และยังคงสามารถเข้าถึงได้โดยใช้แถบเลื่อน กล่าวอีกนัยหนึ่งวัตถุประสงค์ของ Content Inset คือทำให้พื้นที่การโต้ตอบมีขนาดเล็กกว่าพื้นที่จริง
พิจารณากรณีที่เรามีพื้นที่เชิงตรรกะสามส่วนของหน้าจอ:
TOP BUTTONS
TEXT
BOTTOM TAB BAR
และเราต้องการให้ TEXT ไม่ปรากฏอย่างโปร่งใสภายใต้ปุ่มด้านบน แต่เราต้องการให้ข้อความปรากฏอยู่ด้านล่างแถบ TAB TAB และยังคงอนุญาตให้เลื่อนเพื่อให้เราสามารถอัปเดตข้อความที่อยู่ใต้ BOTTOM TAB BAR
จากนั้นเราจะตั้งค่าจุดเริ่มต้นด้านบนให้ต่ำกว่าปุ่มด้านบนและความสูงเพื่อรวมด้านล่างของแถบแท็บ BOTTOM ในการเข้าถึงการนั่งข้อความที่อยู่ด้านล่างเนื้อหา TAB BAR เราจะตั้งค่าส่วนล่างสุดให้เป็นความสูงของ BOTTOM TAB BAR
หากไม่มีส่วนแทรก scroller จะไม่ยอมให้คุณเลื่อนเนื้อหามากพอที่จะพิมพ์ลงไปได้ ด้วยสิ่งที่ใส่เข้าไปมันจะเหมือนกับว่าเนื้อหามีขนาด "เนื้อหาว่าง" เกินขนาดของเนื้อหาที่แทรก ข้อความว่างเปล่าถูก "แทรก" ลงใน "เนื้อหา" ของจริง - นั่นคือวิธีที่ฉันจำแนวคิดได้
มันใช้เพื่อเพิ่มการขยาย UIScrollView
หากไม่มีcontentInset
มุมมองตารางจะเป็นดังนี้:
จากนั้นตั้งค่าcontentInset
:
tableView.contentInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)
ผลกระทบดังต่อไปนี้:
ดูเหมือนว่าจะดีขึ้นใช่มั้ย
และฉันเขียนบล็อกเพื่อศึกษาcontentInset
คำติชมก็ยินดีต้อนรับ
เป็นคำถามที่ดีมาก
พิจารณาตัวอย่างต่อไปนี้ ( scroller
เป็น UIScrollView):
float offset = 1000;
[super viewDidLoad];
for (int i=0;i<500; i++) {
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(i * 100, 50, 95, 100)] autorelease];
[label setText:[NSString stringWithFormat:@"label %d",i]];
[self.scroller addSubview:label];
[self.scroller setContentSize:CGSizeMake(self.view.frame.size.width * 2 + offset, 0)];
[self.scroller setContentInset:UIEdgeInsetsMake(0, -offset, 0, 0)];
}
ส่วนแทรกเป็นวิธีเดียวที่จะบังคับให้ scroller ของคุณมี "หน้าต่าง" บนเนื้อหาที่คุณต้องการ ฉันยังคงล้อเล่นกับโค้ดตัวอย่างนี้ แต่ความคิดที่จะมี: ใช้ขุ่นที่จะได้รับ "หน้าต่าง" UIScrollView
ที่ของคุณ