สร้าง UITableviewCell ที่จัดกลุ่มด้วยการเลือกสีและเส้นขอบแบบกำหนดเอง

ขณะนี้ฉันกำลังเขียนแอปซึ่งใช้สีการเลือกที่แตกต่างกันในมุมมองตารางที่จัดกลุ่ม มันใช้งานได้ดีเมื่อพูดถึงเรื่อง Borders ฉันสามารถเปลี่ยนสีการเลือกด้วยรหัสในโพสต์นี้: จะปรับแต่งสีพื้นหลัง/เส้นขอบของเซลล์มุมมองตารางที่จัดกลุ่มได้อย่างไร

แต่ ฉันอยากได้ Border สวยๆ รอบเซลล์ที่ Apple ใช้เพิ่มเติม ฉันจะใช้เส้นขอบนี้ได้อย่างไร

http://www.mediafire.com/?x2gxbkjqu4d2zto

นี่คือโค้ดสำหรับสร้างพื้นหลัง - ส่วนใหญ่คัดลอกมาจากโพสต์ด้านบน: http://www.mediafire.com/?kltwlni1mf4t7ks

และนี่คือวิธีที่ฉันใช้:

NSIndexPath * indexPath = [[[NSIndexPath alloc] initWithIndex:0] indexPathByAddingIndex:1];
CGRect frame = [[self tableView] rectForRowAtIndexPath:indexPath];
TLCustomCellBackgroundView * selectedBackgroundView = [[TLCustomCellBackgroundView alloc] initWithFrame:frame andColor:[UIColor redColor]];
[selectedBackgroundView setPosition:CustomCellBackgroundViewPositionBottom];
[[[self tableView] cellForRowAtIndexPath:indexPath] setSelectedBackgroundView:selectedBackgroundView];

อย่างที่คุณเห็นฉันเกือบจะทำงานได้อย่างถูกต้องแล้ว ยกเว้นเส้นขอบสีเทารอบๆ เซลล์ที่สอง


person sensslen    schedule 07.03.2012    source แหล่งที่มา


คำตอบ (2)


ใน cellForRowAtIndexPath คุณสามารถตั้งค่าเส้นขอบ (ตัวคั่น) สำหรับแต่ละแถว/ส่วนได้

 if(indexPath.row == 1)
    [tableView setSeparatorColor:[UIColor redColor]];

 if(indexPath.section == 2)
    [tableView setSeparatorColor:[UIColor greenColor]];

อย่าลืมตั้งค่า/รีเซ็ตสิ่งนี้สำหรับแต่ละแถว/ส่วนที่คุณต้องการ

หากคุณต้องการเพิ่มขอบสีเทารอบๆ เซลล์สีแดงของคุณ คุณสามารถเพิ่มขอบสีเทาได้

if(indexPath.section == 0 && indexPath.row == 1){
//assuming this is the correct index)  
   [tableView.separatorColor = [UIColor  colorWithRed:0.67 green:0.67 blue:0.67 alpha:1];
}
else
{
   [tableView.separatorColor = [UIColor yourChosenDefaultColor]];
}

คุณจำเป็นต้องใช้สิ่งนี้ใน cellForRowAtIndexPath ของคุณไม่เช่นนั้นคุณจะต้องกำหนดเส้นขอบสำหรับ TableView ทั้งหมดของคุณ (อาจเป็นสิ่งที่คุณต้องการทำ)

person muffe    schedule 07.03.2012
comment
ฉันเดาว่านี่ใช้สำหรับ TableViews ปกติ แต่ไม่ใช่สำหรับ Style TableViewCells ที่จัดกลุ่ม .. น่าเสียดายที่มันใช้งานไม่ได้... - person sensslen; 07.03.2012
comment
ฉันใช้มันในลักษณะเดียวกันใน TableViews ที่จัดกลุ่มไว้ แสดงรหัสและฉันจะพยายามช่วย - person muffe; 07.03.2012
comment
ถ้าอย่างนั้นฉันก็ขาดอย่างอื่นไป... ฉันอัปโหลดโค้ดแล้ว ขอบคุณสำหรับความช่วยเหลือของคุณ - person sensslen; 07.03.2012
comment
ขอบคุณ! อย่างที่คุณเห็นในความคิดเห็นในคำถามของฉัน ฉันสามารถวาดเส้นขอบนี้ได้ ฉันไม่แน่ใจว่าโซลูชันของคุณใช้งานได้หรือไม่ เนื่องจากฉันกำลังเปลี่ยนมุมมองพื้นหลัง และการลองอย่างรวดเร็วไม่ได้เปลี่ยนแปลงอะไรเลย อย่างไรก็ตามขอบคุณสำหรับการตอบ - person sensslen; 07.03.2012

ฉันพบวิธีแก้ไขปัญหานี้ มันไม่เหมือนกันทั้งหมด (เนื่องจาก UITableviewCell ในสไตล์ที่จัดกลุ่มได้รับการออกแบบที่ซับซ้อนยิ่งขึ้นใน iOS5 แต่ก็เพียงพอสำหรับฉัน ฉันยืมแนวทางนี้จาก http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

และมันก็ใช้งานได้ดี!

รหัสที่ฉันใช้คือ: http://www.mediafire.com/?mdxkpfe8g74ctk9

หวังว่านี่จะช่วยผู้อื่นได้

person sensslen    schedule 08.03.2012
comment
น่าเสียดายที่คุณพูดถูก - มันค่อนข้างนานไปหน่อยตั้งแต่ฉันอัปโหลดมัน.... น่าเสียดายที่ฉันไม่มีพวกมันนอนอยู่อีกต่อไปแล้ว ฉันเปลี่ยนมาใช้แนวทางใหม่ด้วยรูปภาพที่ออกแบบเองทั้งหมดและใช้ฟังก์ชัน setBackgroundView ของ UITableviewcell เพื่อกำหนดมุมมอง! - person sensslen; 23.09.2013