Posts

Showing posts with the label iphone

Apple iPhone Event 10/9/13 :: This should brighten everyone's day

Image
สรุปงาน Apple Event 10/9/13 - iOS 7 เปิดให้โหลดกันวันที่ 18 กันยายน - iPhone 4 ขึ้นไป, iPad 2 ขึ้นไป, iPad mini และ iPod Touch รุ่นที่ 5 เท่านั้น - ซื้อ iOS Device เครื่องใหม่จะได้ชุดโปรแกรม iWork, iLife ฟรี - iPhone 5C ทำจาก Polycarbonate ชิ้นเดียว มี 5 สีคือ ขาว, แดง, ฟ้า, เขียว, เหลือง - เสปค iPhone 5C เทียบเท่า iPhone 5 ทุกประการ (ไม่ต่าง ในความรู้สึกคนใช้) - เคสรูๆ ที่จะโชว์สีของ iPhone 5C ตัดกับสีเคส (ซึ่งไม่รู้ว่าแม่งสวยตรงไหน = =') - iPhone 5S มี 3 สีคือ ดำ, เทา และทอง หน้าตาเหมือน iPhone 5 ทุกประการ - ใช้ A7 CPU ซึ่งเปลี่ยนเป็น 64-bit Architecture เร็วกว่าเดิม แรงกว่าเดิมมาก - iOS 7 และ Apple's App ถูก Re-Engineered ใหม่หมด เพื่อให้ทำงานบน 64-bit ได้ดี - เพิ่ม M7 Motion Coprocessor มาประมวลผลเรื่องทิศทาง (Acc, Gyro) ให้แม่นยำขึ้น - iOS 7 ยังเพิ่ม Core Motion API สำหรับเกมส์ที่ใช้ Motion รุนแรงๆ อีกด้วย (ไม่เคยแตะ) - แบตเตอรี่ไม่ต่างจากเดิมเท่าไร แม้ฟิวส์จะบอกว่ามันดีกว่า (แม่งบอกดีกว่าทุกครั้ง) - กล้องความละเอียดเท่าเดิม แต่เพิ่มขนาดเซ็นเซอร...

[iOS Dev] Social Framework

Image
จากที่เคยเขียน Twitter Integration ไปเมื่อก่อนหน้านี้ ... หลังจากนั้น Apple ก็ได้ผนวก Facebook Sharing Service เข้ามา โดยเปิด Framework ใหม่บน iOS 6 SDK ชื่อว่า Social Framework ทีนี้เราก็ทำ Sharing Service ได้อย่างง่ายๆ บน App ของเราแล้วครับ :) เพิ่ม Social.framework ตัวอย่างการ Post Facebook ที่ใส่ Link ลงไปด้วย  หรือจะเลือกใส่เป็นภาพแทนก็ได้ โดย method นี้จะ return BOOL ที่เป็นสถานะในการแนบไฟล์ ตัวอย่างการ Post Facebook ที่ใส่ Link ลงไปด้วย   หรือจะเลือกใส่เป็นภาพแทนก็ได้ โดย method นี้จะ return BOOL ที่เป็นสถานะในการแนบไฟล์ ความเห็นส่วนตัวคิดว่า Framework นี้ยังทำให้สวยได้อีกเยอะ ใน iOS SDK รุ่นหน้านะ ... เหมือนหลายๆ อย่างยังไม่เสร็จดี แต่เข็นออกมาก่อน ดูง่ายๆ ว่า ทำไม setInitialText ต้องเป็น message ได้อย่างเดียว ซึ่ง property แบบนี้ควรจะรองรับ dot notation ด้วย รอดูกันต่อไปครับ ... คราวหน้าจะมาลองใช้ SLRequest กัน ถ้าจะดึงข้อมูลเบื้องต้น นี่อาจจะไม่ต้องพึ่ง Official SDK เลยล่ะครับ :)

[iOS Dev] Sizes of iPhone UI Elements for Designer

Image
เรามาเขียน Blog ให้ iOS Designer กันบ้างดีกว่า ... วันนี้จะว่าเรื่อง UI Elements พื้นฐานตัวต่างๆ บน iPhone นะครับ ว่าถ้าเราจะลง Design เนี่ยจะต้องออกแบบ UI ส่วนไหนขนาดเท่าไรบ้าง ตามตารางด้านล่างจะเป็น UI มาตรฐานของตัว iOS เองนะครับ Point vs Pixels เนื่องจากตั้งแต่ Apple เปิดตัว iPhone 4 นั้นก็ได้เปิดตัวหน้าจอใหม่ที่ชื่อว่า Retina Display ซึ่งจะมี Pixels มากกว่าเดิม 2 เท่า ดังนั้นเพื่อความเข้าใจง่าย หน่วยของการออกแบบที่ Apple ใช้จึงเป็น Point (pts) โดยที่ 1 pt = 1 pixels ในหน้าจอที่ไม่ใช่ Retina Display และเมื่อเป็น Retina Display ก็แค่คูณ 2 เข้าไป Graphics for Retina Display ความสบายอยู่ตรงนี้แหละ เราไม่จำเป็นที่จะต้องเปลี่ยนหรือเขียน Code อะไรเพื่อจะมารองรับหน้าจอที่เป็น Retina Display เราเพียงแค่ออกแบบ Graphics ตัวใหม่มา พร้อมกับใส่ต่อท้ายชื่อด้วย "@2x" เท่านี้ Apple จะมีเครื่องมือจัดการให้เราเองอัตโนมัติ ส่วนเครื่องมือใน UIKit ก็ขึ้นอยู่กับเราปรับขนาดของ UI เลยครับ เป็นไปตามที่เราตั้งค่าไว้ในหน่วย Point (pts) เหมือนเดิม นั่นคือถ้าเป็น Retina Display ก...

[iOS Dev] Select Photo with UIImagePickerController

Image
วันนี้ก็เป็น Blog ที่ไม่ยากอีกเช่นเคย และจะได้ใช้บ่อยๆ นั่นคือการเลือกรูป ซึ่ง UI ที่เหมาะสม และผมใช้บ่อยๆ ก็คือสร้าง UIImageView หนึ่งตัว ที่สามารถ Tap ได้ จากนั้นก็ให้เลือกว่าจะถ่ายรูป หรือเลือก Photo Library Code ส่วน Interface ก็ประกาศ UIImageView ไว้แล้วก็ประกาศ Protocol ที่ต้องใช้ มาส่วนของ Implementation กันบ้าง ... เพื่อให้ Code มัน Readability ขึ้นเราจะ Define ค่าคงที่ไว้แทนการใช้ Magic Number ใน - viewDidLoad ; ก็เขียนเรียก method ตัวนึงที่จะทำการเซตค่าต่างๆ เนื้อหาของ - setupImageView ; ก็เพียงแค่เซคค่าให้รับการกระทำจากผู้ใช้และใส่ gesture  และเมื่อ Tap ที่ตัว ImageView แล้วก็ให้ผู้ใช้เลือก Source Type ซึ่งพระรองของงานนี้คือ UIActionSheet จากนั้นพระเอกของเราก็ออกโรง (ซะที) นั่นคือ UIImagePickerController นั่นเอง โดย Delegate ก็จะมี 2 method ที่ต้อง Implement นั่นคือจังหวะที่ User กด cancel และเลือกรูปภาพหรือถ่ายรูปเรียบร้อย เท่านี้แหละครับ ในที่นี้ผมแค่ให้ภาพที่เลือกถูกแสดงบน UIImageView ที่ได้เตรียมไว้

[iOS Dev] Singleton Design Pattern

Image
คนหลายคน (รวมทั้งตัวผมเอง) เคยมีข้อสงสัยว่า เราอยากสร้าง Global Object ที่ใช้ได้ทั้ง Apps จะทำอย่างไร ? ซึ่ง Global Object ตัวนี้เราจะมั่นใจได้ว่า ทั้งโปรแกรมเราจะสร้างได้แค่ Instance เดียวเท่านั้น เพื่อใช้ร่วมกันได้ทั้งโปรแกรม หลายคนจะเลือกประกาศ Something ไว้ใน Application Delegate แล้วเรียกใช้ Object ตัวนั้นผ่าน Application Delegate นั่นเป็นสิ่งที่ไม่ถูก ไม่ควรนัก! :\ ลองหัดใช้ Singleton Design Pattern เวลาอยากทำอะไรแบบนี้ดูครับ :) ลองหาข้อมูลอ่านเองนะครับ ผมทิ้งไว้แค่ Example Code เพื่อกันตัวเองลืมก็พอ :P กรณีนี้ผมจะสร้าง Services Class ตัวนึงด้วย Singleton Pattern แบบที่ใช้ GCD ด้วย (เดี๋ยวจะแปะแบบไม่ใช่ GCD ไว้ตอนท้ายนะ :) จากนั้นใน Implementation File ก็จะเป็นการเขียน initialize method เพื่อสร้าง Instance ตัวนี้ และสามารถ Manipulate Object นี้ได้เลย ในที่นี้ผมเขียน App อ่านข่าวประจำวันขึ้นมา ข้อมูลข่าวทั้งหมดก็จะอยู่ที่นี่ สามารถนำข้อมูลไปใช้ได้ทั้งโปรแกรมโดยที่เข้าถึง instance ตัวเดียวกัน เวลาจะเรียกใช้ก็ง่ายๆ แค่ไปสร้าง Singleton Object ไว้แล้...

RandomNumber in Java(Android) and Objective-C(iOS)

Image
ฟังก์ชั่นที่น่าสนใจ ใช้บ่อยพอสมควรในการทำโปรแกรมอะไรสักอย่าง.. นั่นคือ Random ครับ... ที่จะมาแนะนำวันนี้เป็น ฟังก์ชั่นที่ใช้ในการ Random ค่าตัวเลขชนิดต่าง ๆ ออกมา... มาเริ่มกันเลยครับ ^^ ขอเริ่มที่ Objective-C Language ก่อนนะครับ ภาษานี้ใช้ในการพัฒนา Application บน iOS ครับ... ^^ ซึ่งฟังก์ชั่นที่ใช้คือ arc4random() ครับ... อันนี้คือผมสร้าง Array of Integer ขนาด 5 ช่องขึ้นมารับค่าเอาไว้ และแสดงผลมันออกมาได้ดังนี้ ซึ่งค่าที่ได้ออกมาก็จะเป็นช่วงของ Integer ขนาด 4 byte ครับผม ^^ ส่วนถ้าคุณต้องการที่จะ "กำหนดช่วงของการ Random"  สามารถทำได้โดยใช้การ Mod(%) ครับ เช่น  randomNumber = arc4random()%100; (Range = 0-100) ต่อไปเป็นภาษา Java นะครับ ซึ่งจะใช้ใน Android and Blackberry Development โดยภาษา Java นั้นจะมีฟังก์ชั่น Random ที่น่าสนใจ 2 ตัวคือ 1. Math.random in Java.math.*; ขั้นแรกต้อง import เข้ามาก่อนหรือจะ import java.Math.*; ก็ได้...  คำสั่งก็ประมาณนี้ ดูภาพก็น่าจะรู้เนาะ ^^ ขออธิบายเกี่ยวกับตัวฟังก์ชั่นนี้ นิดนึง...  ฟังก์...

Mobile Development Review

วิจารณ์ตามความคิดของตัวเองนะครับ... หลังจากที่ได้ลองเขียนเบื้องต้นมาทั้ง 3 Platform 1. iOS โค้ดยาก ภาษาไม่นิยมมากนัก แต่ไม่เวิ้นเว่อ     Interface ทำง่ายมาก... ไม่ต้องใช้ Code เลย และต้องใช้ Mac เท่านั้น (VMWare ได้แต่ไม่ราบรื่น) 2. Android :: Java แน่นอน เวิ้นเว้อ โค้ดเยอะ     ใช้ XML Code ในการวาด Interface ข้อดีคือ     พัฒนาได้ทุกที่ทั้ง windows,mac,linux 3. Blackberry :: Java เช่นกัน แต่ใช้ Code วาด Interface เลย ไม่ยากมาก     Layout เป็น  Linear ที่จัดการแนวนอนด้วย HorizontalMode     ซึ่งจะมีปัญหาเมื่อมี Object เยอะ ๆ โค้ดจะเวิ้นเว้อมาก... ^^     และความไม่ชอบส่วนตัว เพราะเป็นมือถือที่ใช่ ปุ่ม ในการทำงาน... ซึ่งเข้าถึง Interface ไม่ได้มากนัก สำหรับบทความนี้คงเป็นตัวช่วยในการตัดสินใจให้หลาย ๆ คนบ้าง ไม่มากก็น้อย... Comment ตามความรู้สึกที่ได้เขียนนะครับ และไม่ได้ลงลึก และ เมพสัก Platform เดียว... แค่เริ่มต้นเท่านั้น สำหรับผม ... ผมต้องการเก่งกว่านี้อีก... !!

[iOS Dev] Fast Enumerator in Objective-C

Image
จะเรียกว่าอะไรดีล่ะ ผมก็พึ่งรู้วันนี้จาก อาจารย์ท่านนึงของผม ^^  เค้ามา Comment Blog ผม ก็เลยหยิบมาเขียนซะเลย อิอิ ผมเรียกว่ามันเป็น "ชุดคำสั่งพิเศษ" แล้วกัน อิอิ นี่คือ Array ที่ว่าซึ่งเก้บข้อมูลเป็น String ทั้งหมด 6 ตัว ส่วนใหญ่แล้วเวลาเราจะแสดงข้อมูลใน Array เราทำแบบนี้กันใช่มั้ยครับ ?? เปลี่ยนเป็นเรามาใช้ Fast Enumerator ดีกว่าครับ โดยมีโครงสร้างคือ... for(ObjectType *object in ContainerObject) {          // do something with object } Example :: ซึ่งมาสารถเขียนได้เหมือนกัน ^^ ผลลัพธ์เหมือนกัน  แล้วแต่คนชอบนะครับ อิอิ  ตอนแรกผมก็เขียนแบบแรกมาตลอด พอมาเจอแบบนี้ มันก็เท่ดีครับ ^^ ขอบคุณเทคนิคจาก  @rawitat  http://www.rawitat.com

[iOS Dev] Array and MutableArray in Objective-C

Image
วันนี้เราจะมารู้หนึ่งในโครงสร้างข้อมูลของภาษา Objective-C นะครับ นั่นคือ NSArray และ NSMutableArray ทำไมต้อง NS ?? ใบ้ให้ว่า NS == NextStep การบ้านคือลองไปหาดูว่ามันมาที่มาจากไหน ?? ^^ ไฟล์ที่เขียนจะเป็นไฟล์ .m นะครับ ซึ่งเป็น implementation file ของภาษา Objective-C เราจะเขียนโดยใช้ Library พื้นฐานจาก Foundation.h และ Framework Cocoa นะครับ ซึ่งสามารถนำ Code พวกนี้ไปพัฒนา iPhone Application ได้ด้วย... ขั้นแรกเราก็ import Library ทั้ง 2 ตัวเข้ามา... เขียนฟังก์ชั่น main พร้อมกับ สร้าง AutoreleasePool ขึ้นมาด้วย ในส่วนนี้จะเป็นการสร้างข้อมูล  NSArray ขึ้นมานะครับ... ก็เหมือน Array ในภาษาทั่ว ๆ ไปแหละครับ [NSArray arrayWithObjects: ] เป็น Constructor ตัวหนึ่งใน NSArray Class ซึ่งจะเอาไว้กำหนดค่าให้กับข้อมูลใน Array ของเรา โดย **ข้อมูลตัวสุดท้ายจะต้องเป็น nil (ภาษาอื่นๆ คือ NULL) เสมอ จากนั้นก็แสดงออกมาจาก Shell โดยใช้คำสั่ง NSLog (คล้ายกับ printf เลยครับ) และสังเกตให้ดี ใน for ของเรามีการเรียกใช้ Function Count ด้วย ^^ อ่ะ มาดูในส่วนของ NSMutableArray กันบ้...