Ta sẽ làm một ứng dụng đọc thơ
Nhật cổ.
Copy các bài thơ tùy chọn của bạn
vào notepad lưu thành file txt có Encoding là UTF-8.
Kéo các file đó vào thư mục bên
trái ứng dụng, tích Copy Items is needed.
Khai báo một label tiêu đề, một
tableView, imageview, mảng tên các bài thơ.
var tableView: UITableView!
var qua2=["Bài một","Bài hai","Bài
ba","Bài bốn","Bài
năm","Bài
sáu","Bài bảy","Bài
tám"]
let image = UIImage(named: "hoa")
var ima: UIImageView!
var la: UILabel!
Định vị, tô màu chữ, nhét vào
view trong viewDidLoad.
let c = UIScreen.mainScreen().bounds.size.height
la = UILabel(frame: CGRect(x: 120, y: 10, width: 200, height: 30))
let t = "Thơ ca Nhật Bản"
let a=NSMutableAttributedString(string: t, attributes: [NSForegroundColorAttributeName: UIColor.orangeColor(), NSFontAttributeName: UIFont(name: "Georgia", size: 18.0)!])
la.attributedText = a
tableView = UITableView(frame: CGRect(x: 10, y: 70, width: 325, height: c-50))
let the = tableView
the.registerClass(UITableViewCell.classForCoder(), forCellReuseIdentifier: "iden")
the.dataSource = self
the.delegate = self
view.backgroundColor = UIColor.whiteColor()
view.addSubview(la)
view.addSubview(the)
Copy các hàm tạo tableView ra
ngoài viewDidLoad.
func numberOfSections(in tableView: UITableView) ->Int {
return1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) ->Int {
return qua2.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("iden", forIndexPath:
indexPath)
cell.textLabel?.text = qua2[indexPath.row]
cell.textLabel?.font = UIFont(name:"Futura", size:18)
cell.textLabel?.textColor=UIColor.blueColor()
cell.imageView?.image = image
cell.accessoryType = .DisclosureIndicator
return cell
}
func tableView(tableView: UITableView,
didSelectRowAtIndexPath
indexPath: NSIndexPath) {
let row = qua2[indexPath.row]
let so = indexPath.row
let vc = fo()
vc.so=so
vc.tenbai=row
self.presentViewController(vc, animated: true, completion: nil)
}
Chú ý hàm dưới cùng, ta
set để khi người dùng chạm dòng thì sẽ chuyển tên bài thơ và số dòng sang bên
class đọc.
Copy lệnh để bỏ thanh bar
cột sóng ở trên.
overridefunc prefersStatusBarHidden() ->Bool {
returntrue
}
Chạy thử để xem kết quả.
Tạo một class để đọc thơ, tên là
fo chẳng hạn.
Khai báo 2 label hiển thị tên
bài thơ, tác giả, 1 textView để hiện bài thơ, imageview để làm nền, các mảng cần
dùng, 2 biến để nhận tên và số dòng chuyển sang.
var so=0
var tenbai = " "
let im = UIImage(named: "nen")
var la: UILabel!
var la2: UILabel!
var ima: UIImageView!
var gi:UITextView!
var ar = ["t1","t2","t3","t4","t5","t6","t7","t8"]
var tacgia = ["Teika","Jakuren","Komachi","Saigyo","Ise","Shunzei","Shotetsu","Sosei"]
Định vị trong viewDidLoad
let c = UIScreen.mainScreen().bounds.size.height
let r = UIScreen.mainScreen().bounds.size.width
la = UILabel(frame: CGRect(x: 80, y: 80, width: 100, height: 30))
la2 = UILabel(frame: CGRect(x: 140, y: 250, width: 100, height: 30))
la.text = tenbai
la2.text = tacgia[so]
la2.textColor = UIColor.darkGrayColor()
la.textColor = UIColor.magentaColor()
ima = UIImageView(frame: CGRect(x: 0, y: 0, width: r, height: c))
ima.image = im
gi = UITextView(frame: CGRect(x:50, y: 120, width: 250, height: 160))
view.backgroundColor = UIColor.whiteColor()
la.center = CGPoint(x: view.center.x, y:90)
Ta set tên bài thơ ra label thứ
nhất, tên tác giả để đúng thứ tự trong mảng, lấy ra theo chỉ số dòng, set vào
label 2.
Image làm nền ta cho nó kín màn
hình, dùng r, c là rộng cao để set.
Khi nhét vào view, để image đầu
tiên thì nó sẽ ra phía sau tất cả các view khác.
view.addSubview(ima)
view.addSubview(gi)
view.addSubview(la)
view.addSubview(la2)
Copy hàm đọc file txt vào trong
viewDidLoad
let path2 = NSBundle.mainBundle().pathForResource(ar[so], ofType: "txt")!
var rea2 : String = ""
var t = ""
do {
try rea2 = NSString(contentsOfFile: path2, encoding: NSUTF8StringEncoding) asString
t=rea2
}
catchlet error asNSError {
// print("ERROR :
reading from file \(fileName) : \(error.localizedDescription)")
}
gi.text = t
gi.font = UIFont.italicSystemFontOfSize(17)
gi.textColor=UIColor.blueColor()
gi.textAlignment = NSTextAlignment.Center
gi.backgroundColor=UIColor.clearColor()
Ta set chữ ra textView và đổ
màu, để chữ nghiêng, set textView trong suốt bằng lệnh clearColor() để có thể thấy nền đằng sau.
Bây giờ ta muốn vuốt để trở về
màn hình trước, thêm hàm sau xuống trên ngoặc đóng cuối cùng.
func tap (g:UIGestureRecognizer) {
self.dismissViewControllerAnimated(true, completion: nil)
}
Bên trong viewDidLoad thêm dòng
sau.
let t2 = UIPanGestureRecognizer(target:self,
action:#selector(fo.tap(_:)))
view.addGestureRecognizer(t2)
Cuối cùng là lệnh làm mất thanh
bar cột sóng trên đầu ứng dụng.
overridefunc prefersStatusBarHidden() ->Bool {
returntrue
}
}
Chạy thử để thấy ứng dụng đã hoạt
động như ý muốn.
No comments:
Post a Comment