5.5 Màn Hình Runtime
5.5.4 Đối Tượng Image
Image là đối tượng thể hiện hình ảnh trên nó, không chỉ một hình mà có thể chứa trong nó 2 (chức năng on-off) hoặc 4 hình (chức năng Animation) . Các bước làm việc với Image
Bước 1: Vẫn là tạo ra đối tượng quản lý với các thuộc tính mà ta mong muốn gán cho đối
tượng, và cách thực hiện cũng giống như trước chỉ khác ở các thuộc tính mong muốn. Trong đối tượng Image có các thuộc tính thêm vào như sau:
NSString *name: tên của đối tượng Image.
NSString *tagAssign: tên của Tag được gán vào đối tượng Image.
NSString *operationMode: chế độ hoạt động của Image. Gồm có 3 chế độ: Static, On- Off, Animation.
NSString *staticImageName: tên của hình ở chế độ Static.
NSString *onImageName: tên hình sẽ được hiển thị khi tag gán vào hình có giá trị "True".
NSString *offImageName: tên hình sẽ được hiển thị khi tag gán vào hình có giá trị “False”.
NSString *imageName1: tên hình sẽ được hiển thị thứ 1 khi ở chế độ Animation, tương tự tiếp theo cho các tên hình phía dưới.
NSString *imageName2;
NSString *imageName3;
NSString *imageName4;
NSString *decription: mô tả là hình đã được xóa chưa. Nếu xoá rồi sẽ không được cập nhật vào cơ sở dữ liệu.
Bước 2: trong giao diện Runtime tạo tool khi chạm vào nó sẽ tạo ra một đối tượng Image
tuy nhiên khác với các đối tượng khác là sẽ không tạo ngay ra một đối tượng mặc định mà sẽ hiển thị lên một trang để người dùng có tuỳ chọn theo ý mình thuộc tính của Image. Đoạn code để hiện thị trang lên khi có thao tác Tap (chạm) vào thì cũng giống như các đối tượng khác nên sẽ không được trình bày tại đây. Trong bước này sẽ nói sâu vào phần tạo ra được giao diện trang phụ này.
Ta gọi trang này là Design Image View (trang phục vụ thiết kế Image). Giao diện của trang như sau.
Page 53
Hình 5-18 Giao diện chọn Image
Segment để chọn chế độ hoạt động cho Image.
Hình 5-19 Segment chọn Fucntion cho Image
PickerView để chọn thư viện hình ảnh.
CollectionView để hiển thị và cho phép người dùng chọn hình.
Hình 5-20 Giao diện thư viện Image
Page 54
Hình 5-21 Giao diện hiển thị hình ảnh đã chọn Các bước xử lý các đối tượng:
Thư viện hình ảnh:
o Để quản lý thư viện hình ta tạo một class ImageLibrary gồm có 2 thuộc tính là name và imageName. Với name là tên của thư viện, imageName là mảng quản lý tất cả tên của các hình ảnh có trong thư viện (thường hình ảnh sẽ có cùng tên với thư viện kèm theo hâu tố là số thứ tự).
o Tên của thư viện hình sẽ được hiển thị trên PickerView, muốn làm được điều đó ta cần phải có mảng chứa tên của tất cả thư viện hình ảnh. Thứ tự tên hiển thị sẽ giống với thứ tự trong mảng.
o Khi hàng nào của PickerView được chọn sẽ trả về một hàm ngắt là :"-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component" Với row là số thứ tự của cột được chọn trả về. Với thứ tự đó tham chiếu qua sẽ là tên của thư viện được chọn, cập nhật dữ liệu trên collectionView bằng thư viện hình ảnh ứng với tên thư viện được chọn bằng hàm : "[yourCollectionViewObject
updateViewConstraintsWithImageLibrary:yourImageNameArray]".
Chế độ hoạt động của image:
o Khi người dùng chọn chế độ hoạt động trên Segment sẽ trả về hàm ngắt: "-
(IBAction)segment_Touch:(id)sender" với hàm này ta sẽ kiểm tra được
segment nào vừa được chọn nhờ vào sender trả về (if (sender == yourSegmentName) => do something). Tại đây kiểm tra xem segment được chọn ở vị trí nào (thuộc tính
yourSegmentName.selectedSegmentIndex, ứng với vị trí đó sẽ gán cho image với chế độ hoạt động tương ứng, và số lượng imageChoseView hiển thị các hình ảnh được người dùng chọn cũng sẽ thay đổi phụ thuộc vào chế độ hoạt động của image.
Chọn hình:
o Khi người dùng chạm vào hình trên CollectionView sẽ trả về một phương thức ngắt “- (void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath dựa vào đối số indexPath” ta có thể xác định được vị trí của đối tượng hình vừa được chọn (indexPath.item). Nếu đối tượng hình đó được chọn 2 lần liên tiếp sẽ set cho imageChoseView hiển thị hình ảnh được chọn và gán thuộc tính tên hình ảnh cho đối tượng hình ảnh được tạo. Tuỳ vào chế độ hoạt động mà số
Page 55
lượng hình được chọn là khác nhau và tên sẽ được gán vào thuộc tính khác nhau.
o Phương thức gán tên hình ảnh được chọn vào thuộc tính của đối tượng hình ảnh kết quả và hiển thị hình ảnh được chọn lên imageChoseView :"- (void) collectionViewController:(CollectionViewController *)collectionView imageName:(NSString *)imageName". Phương thức này được trả về từ class CollectionViewCotroller khi một hình ảnh được chọn, đối số trả về là tên của hình vừa được chọn.
Bước 3: Cho phép người dùng thay đổi thuộc tính của đối tượng đã tạo ra.
Bước này cũng tương tự như nhưng đối tượng khác, cũng phát hiện thao tác chạm vào đối tượng khi RunTimeForm đang ở chế độ "Stop", khi đó sẽ hiển thị lên giao diện sửa chữa cũng là giao diện thiết kế. Và đối tượng trả về chính là đối tượng đã được đưa vào giao diện trước đó.