ฉันต้องการเพิ่มพื้นที่ว่างที่ด้านบนของ UITableView ซึ่งไม่มีผลต่อขนาดของพื้นที่เนื้อหา การเลื่อนเนื้อหาลงหรือเพิ่มเซลล์ว่างไม่ใช่สิ่งที่ฉันต้องการทำ แต่ฉันต้องการชดเชย
อย่างไร?
ฉันต้องการเพิ่มพื้นที่ว่างที่ด้านบนของ UITableView ซึ่งไม่มีผลต่อขนาดของพื้นที่เนื้อหา การเลื่อนเนื้อหาลงหรือเพิ่มเซลล์ว่างไม่ใช่สิ่งที่ฉันต้องการทำ แต่ฉันต้องการชดเชย
อย่างไร?
คำตอบ:
ฉันไม่แน่ใจว่าฉันกำลังติดตามคุณอยู่หรือเปล่า แต่ฉันคิดว่าฉันมีสถานการณ์เดียวกัน ในกรณีของฉันฉันต้องให้พื้นที่กับ ADBannerView ที่ด้านบนของหน้าจอดังนั้นสิ่งที่ฉันทำก็คือในเมธอด viewDidLoad ที่ฉันเพิ่ม:
[self.tableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];
ค่าที่ใช้คือ UIEdgeInsetsMake (บนซ้ายล่างขวา)
หรือเหมือนกันกับ Swift:
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0)
Swift 4.2:
self.tableView.contentInset = UIEdgeInsets(top: 50, left: 0, bottom: 0, right: 0)
คุณสามารถเพิ่มมุมมองส่วนหัว "ว่าง" ลงในตารางได้ ... ซึ่งจะทำให้ลักษณะเริ่มต้นของตารางมีค่าออฟเซ็ต แต่เมื่อคุณเริ่มเลื่อนค่าออฟเซ็ตก็จะหายไป ไม่แน่ใจว่าเป็นสิ่งที่คุณต้องการ
หากคุณต้องการออฟเซ็ตถาวรและยังไม่ได้ใช้ส่วนหัวของส่วนคุณสามารถสร้างออฟเซ็ตได้เหมือนกับด้านบนโดยสร้างมุมมองที่กำหนดเองสำหรับส่วนหัวของส่วนโดยเฉพาะอย่างยิ่งถ้าคุณมีเพียงส่วนเดียวสิ่งนี้อาจทำให้คุณได้เห็นออฟเซ็ตถาวร .
ฉันสามารถโพสต์โค้ดตัวอย่างได้หากดูเหมือนว่าข้อใดข้อหนึ่งคือสิ่งที่คุณกำลังมองหา
ฉันรวมคำตอบของ Jigzat เข้ากับ:
[self.tableView scrollRectToVisible:CGRectMake(0, 0, 320, 1) animated:NO];
ใน
- (void)viewDidLoad
เซลล์แรกจึงไม่อยู่ด้านบนสุด
เพิ่มสิ่งต่อไปนี้ใน viewDidLoad
นั่นคือทั้งหมดที่มีให้จริงๆ
override func viewDidLoad() {
super.viewDidLoad()
tableView.contentInset.top = 100
}
ดูเหมือนว่าคุณต้องการปิด "View" ไว้รอบ ๆUITableView
ไฟล์. หากคุณมีUITableViewController
ใน IB UITableView
โดยอัตโนมัติจะถูกตั้งค่าของview
UITableViewController
คุณเปลี่ยนview
คุณสมบัติเป็นปกติUIView
และเพิ่มของคุณที่UITableView
นั่นและให้ค่าชดเชย
--- แก้ไข --- ฉันเพิ่งอ่านโพสต์ของฉันและคิดว่ามันสมเหตุสมผลดี :) เมื่อคุณสร้างUITableViewController
คุณจะได้รับสิ่งนี้ (ในรหัสหลอก):
UITableViewController.view = UITableView
ซึ่งหมายความว่าตารางจริงจะใช้พื้นที่ทั้งหมดและคุณไม่สามารถเพิ่มมุมมองอื่น ๆ ได้ ดังนั้นคุณต้องเปลี่ยนไฟล์
UITableViewController.view = UIView
และเพิ่มตารางของคุณลงในนั้น UIView
ฉันรวมคำตอบนี้เข้ากับคำตอบนี้: https://stackoverflow.com/a/9450345/1993937
ในการทำให้ tableView ปรากฏที่ด้านบนของสิ่งที่ใส่ในเนื้อหาดังนั้นพื้นที่ด้านบนจะไม่ถูกตัดออกโดยให้ tableView เลื่อนลงเล็กน้อยเมื่อมุมมองเริ่มปรากฏขึ้น (18 คือช่องว่างบนสุดของฉัน)
[self.tableView setContentInset:UIEdgeInsetsMake(18,0,0,0)];
[self.tableView setContentOffset:
CGPointMake(0, -self.songListTable.contentInset.top) animated:YES];