Wednesday, October 4, 2017

Làm đèn nhấp nháy trong Swift

Bạn muốn ứng dụng có dãy đèn nhấp nháy để trang trí, nhìn cho vui mắt, ta sẽ làm thế nào ?
Hãy chuẩn bị các ảnh màu hình tròn giống hệt nhau, chỉ khác nhau màu sắc ở giữa.

Kéo các ảnh vào cột thư mục bên trái ứng dụng, cứ để ngay ngoài cho dễ nhìn.

Các ảnh có kích thước y như nhau, chỉ khác màu, khi ta thay đổi chúng sẽ tạo ra hiệu ứng giống như đang nhấp nháy.
Khai báo lên trên viewDidLoad
let im1 = UIImage(named: "l1");
    let im2 = UIImage(named: "l2");
    let im3 = UIImage(named: "l3");
    let im4 = UIImage(named: "l1");
    let im5 = UIImage(named: "l2")
  
    var ima1: UIImageView!
    var ima2: UIImageView!
    var ima3: UIImageView!
    var ima4: UIImageView!;
    var ima5: UIImageView!;
var count=1
Ta khai báo các image, cùng imageview, tạo một biến đếm ngược để dùng.
Định vị, gắn ảnh, nhét vào view trong viewDidLoad
ima1 = UIImageView(frame: CGRect(x: le, y: 520, width: 40, height: 40))
        ima2 = UIImageView(frame: CGRect(x: le+45, y: 520, width: 40, height: 40))
        ima3 = UIImageView(frame: CGRect(x: le+90, y: 520, width: 40, height: 40))
        ima4 = UIImageView(frame: CGRect(x: le+135, y: 520, width: 40, height: 40))
        ima5 = UIImageView(frame: CGRect(x: le+180, y: 520, width: 40, height: 40))
        ima1.image = im1
        ima2.image = im2
        ima3.image = im3
        ima4.image = im4
        ima5.image = im5
view.addSubview(ima1)
        view.addSubview(ima2)
        view.addSubview(ima3)
        view.addSubview(ima4)
        view.addSubview(ima5)
Biến le tức là để căn cho dãy ảnh vào giữa. Ta lấy chiều rộng màn hình bằng lệnh.
let r = UIScreen.mainScreen().bounds.size.width
Sau đó đã biết dãy ảnh rộng 220, ta trừ đi rồi chia 2 là được lề cần có.
let le = (Int(r) - 220)/2
Copy hàm sau xuống trên ngoặc đóng cuối cùng.
func update(){      
       count = count + 1
        if count%3==1{
            ima1.image = im1
            ima2.image = im2
            ima3.image = im3
            ima4.image = im4
            ima5.image = im5
        }
        else if count%3==2{
            ima1.image = im2
            ima2.image = im3
            ima3.image = im4
            ima4.image = im5
            ima5.image = im1
        }
        else{
            ima1.image = im3
            ima2.image = im4
            ima3.image = im5
            ima4.image = im1
            ima5.image = im2
        }
    }
Cuối cùng, cho dòng sau vào trong viewDidLoad.
let time=NSTimer.scheduledTimerWithTimeInterval(1.0, target:self,  selector: "update",userInfo: nil, repeats: true)
Ta gọi hàm update trong thời gian thực và cứ mỗi một giây lại cộng thêm 1 vào biến đếm count. Ta thay đổi ảnh theo thời gian, có ba pha ảnh, cứ 1, 2, 3 giây lại có ảnh thay đổi, ta chia thời gian cho 3 lấy số dư để xác định.
Giả sử có 5 ảnh, ta sẽ chia cho 5, lấy thành 5 pha cho vào lệnh if.

Sự  thay đổi ảnh này tạo ra hiệu ứng giống như đang nhấp nháy, dùng để trang trí.

No comments:

Post a Comment