DeveloperFeaturediOS DeveloperObjective CProgramming Language

เขียนแอพฯ iPhone สร้าง Animation Menu ให้สวยด้วย DCPathButton

หน้าจอเมนูของแอพพลิเคชัน iPhone มักจะเป็นจุดขาย ยิ่งเป็น Animation Menu ที่สวยจะน่าใช้แอพฯ มากขึ้นแนะนำว่าลอง DCPathButton มาช่วยพัฒนาจะสวยขึ้นครับวิธีการทำงานคือ

เมนูจะเป็นวงกลม และมีวงกลมรอบๆ โผล่ขึ้นมาเมื่อกด เมนูตรงกลาง และเมื่อกดเมนูตรงกลางอีกครั้ง ก็จะหุบเมนูรอบๆ เข้าไปทดที พร้อมแอนิเมชันหมุนวนสวยๆ ก่อนอื่นไปหาเมนูวงกลมสวยๆ ก่อน ผมแนะนำไปหาที่ iconfinder ครับ

Screen Shot 2557-01-24 at 11.27.30 AM

Let’s Start!

ต่อมาให้เข้าไปดาวน์โหลดที่

https://github.com/Tangdixi/DCPathButton/blob/master/iOS%20Project/DCPathButton/DCPathButton.m

หรือจาก เว็บไซต์ของเราเองที่นี่ครับที่นี่

https://www.daydev.com/download/DCPathButton.zip

เริ่มต้นพัฒนากันเลยดีกว่า
ทำการ New Project ขึ้นมาใหม่ ตั้งชื่อว่า AnimationMenu ครับ

Screen Shot 2557-01-24 at 11.26.42 AM

Screen Shot 2557-01-24 at 11.26.57 AM

ต่อมาให้ Add File เข้า Project ครับ โดยเอา Folder ของ DCPathButton เข้ามาวางใน Project Tree ของเราเลย

Screen Shot 2557-01-24 at 11.37.23 AM

ตามภาพ

Screen Shot 2557-01-24 at 11.37.55 AM

เห็น DCPathButton เข้ามาแล้ว ก็ให้ทำการวางไฟล์ รูปภาพทั้งหมดลงไป ในตัวอย่างผมวางสัก 5 รูปตั้งชื่อ

  • custom_1.png
  • custom_2.png
  • custom_3.png
  • custom_4.png
  • custom_5.png

และ

custom_center.png คือเมนูตรงกลางอีกหน่อยนึง

Screen Shot 2557-01-24 at 11.38.15 AM

ต่อมาให้เปิดไฟล์ ViewControll.h ขึ้นมาครับ ทำการ Import ส่วนของ DCPathButton เข้าไปให้แอพพลิเคชันของเราเรียกใช้งานมันจากเดิมคือ

#import 
@interface ViewController : UIViewController
@end

เป็น

#import 
#import "DCPathButton.h"
@interface ViewController : UIViewController

@end

เปิดไฟล์ ViewController.m ขึ้นมา เพิ่มคำสั่งในเมธอด ViewDidLoad() ตามนี้

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.frame = CGRectMake(0, 0, 320, 560);
    self.view.backgroundColor = [UIColor whiteColor];
    DCPathButton *dcPathButton = [[DCPathButton alloc]
        initDCPathButtonWithSubButtons:6
        totalRadius:80
        centerRadius:25
        subRadius:25
        centerImage:@"custom_center"
        centerBackground:nil
        subImages:^(DCPathButton *dc){
                    [dc subButtonImage:@"custom_1" withTag:0];
                    [dc subButtonImage:@"custom_2" withTag:1];
                    [dc subButtonImage:@"custom_3" withTag:2];
                    [dc subButtonImage:@"custom_4" withTag:3];
                    [dc subButtonImage:@"custom_5" withTag:4];
                    [dc subButtonImage:@"custom_6" withTag:5];
                    }
        subImageBackground:nil
        inLocationX:0 locationY:0 toParentView:self.view];
    dcPathButton.delegate = self;
}

สังเกต
totalRadius:80
centerRadius:25
subRadius:25

80 คือค่าของวงกลมใหญ่ ของทั้ง 7 เมนูรวม เมนูตรงกลาง ผมปรับให้พอเหมาะพอเจาะ
25 เป็น รัศมีของวงกลมปุ่มตรงกลางใน centerRadius
และ รัศมีของปุ่มเล็กๆ subRadius เป็น 25 เช่นกัน

ส่วนตำแหน่ง กลางหน้าจอนั้นปรับที่นี่ครับ

self.view.frame = CGRectMake(0, 0, 320, 560);

ส่วนของ

subImages:^(DCPathButton *dc){
[dc subButtonImage:@"custom_1" withTag:0];
[dc subButtonImage:@"custom_2" withTag:1];
[dc subButtonImage:@"custom_3" withTag:2];
[dc subButtonImage:@"custom_4" withTag:3];
[dc subButtonImage:@"custom_5" withTag:4];
[dc subButtonImage:@"custom_6" withTag:5];
}

คือการฝังกราฟิกลงในตัวแปร Array ให้เรียกรูปภาพครับ

ทดสอบ Run ตัวแอพพลิเคชันของเราหน่อยนึง โดยการกดที่ปุ่มตรงกลางให้ Expand ออก และกดอีกครั้งให้หุบครับ

Screen
ต่อมาถ้ากด เมนูย่อย แล้วจะเกิดอะไรขึ้นบ้าง เราต้องใส่ Event ให้มันครับ ให้สร้าง Method ใหม่ขึ้นมาตามนี้

#pragma mark - DCPathButton delegate

- (void)button_0_action{
    NSLog(@"Menu 0 Click");
}

การอ้างอิงให้อ้างอิงตาม withTag ของเมนูแต่ละเมนู
ทดสอบ Run ตัวแอพพลิเคชันของเราอีกครั้งครับ แล้วคลิกเมนู แรก สังเกตการใช้ NSLog ให้แสดงข้อความครับ

Screen Shot 2557-01-24 at 12.04.27 PM

เราสามารถใส่ Event ให้ครบทุกเมนูโดยการเพิ่ม Code คล้ายๆ กันตามตัวอย่างนี้ครับ

#pragma mark - DCPathButton delegate

- (void)button_0_action{
    NSLog(@"Menu 0 Click");
}
- (void)button_1_action{
    NSLog(@"Menu 1 Click");
}

ลอง Run แล้วเทสดูก็โอเคครับ ส่งค่าตรงเป๊ะ

Screen Shot 2557-01-24 at 12.04.50 PM

ส่วนของการใช้งาน DCPathButton ก็เสร็จแค่นี้ครับ ส่วนการให้เกิด การเปลี่ยนหน้านั้นก็ใช้ Code ในการเปลี่ยนหน้า เพิ่ม Animation:YES เข้าไปก็เป็นอันเสร็จครับ

ดาวน์โหลด Source Code ของ Project ตัวนี้ได้ที่นี่

https://www.daydev.com/download/AnimationMenu.zip

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน