有人告诉我,“主页”这个函数太笨重,无法方便地制作桌面视图。单元格将在“相册图标”和“相册图标顶部的按钮”中显示信息。
import UIKit
import Cartography
import ChameleonFramework
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{
//DECLORATION OF TABLEVIEW
var albumTable = UITableView()
//DECLORATION OF TITLE
var catalogs = UILabel()
//DECLORATION OF ALBUM BUTTON ICONS
var button: UIImage = UIImage (named: "AlbumButton")!
var album1:UIImageView!
var album2:UIImageView!
var album3:UIImageView!
var album4:UIImageView!
//DECLORATION OF BUTTONS ON TOP OF ICON
var button1 = UIButton()
var button2 = UIButton()
var button3 = UIButton()
var button4 = UIButton()
//DECLORATION OF CAMERA BUTTON ICON
var camLabel = UILabel() //SNAP IT!
var camera: UIImage = UIImage (named: "Camera")!
var camera1:UIImageView!
var button5 = UIButton()//CLEAR BUTTON COVERING CAMERA ICON AND LABEL
override func viewDidLoad() {
super.viewDidLoad()
homePage()
//TABLEVIEW
albumTable.delegate = self
albumTable.dataSource = self
albumTable.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//FUNCTION FOR MAINPAGE VIEWS
func homePage() {
//BACKGROUND COLOR
self.view.backgroundColor = UIColor.flatPowderBlueColor()
//TITLE
self.view.addSubview(catalogs)
self.catalogs.text = "MY ALBUMS"
self.catalogs.font = UIFont(name: "ChalkboardSE-Bold", size: 28)
self.catalogs.textAlignment = .Center}
//PHOTO ALBUM ICONS
album1 = UIImageView()
album1.contentMode = .ScaleAspectFill
album2 = UIImageView()
album2.contentMode = .ScaleAspectFill
album3 = UIImageView()
album3.contentMode = .ScaleAspectFill
album4 = UIImageView()
album4.contentMode = .ScaleAspectFill
album1.image = button
album2.image = button
album3.image = button
album4.image = button
/*album1.backgroundColor = UIColor.redColor()
album2.backgroundColor = UIColor.redColor()
album3.backgroundColor = UIColor.redColor()
album4.backgroundColor = UIColor.redColor()*/
self.view.addSubview(album1)
self.view.addSubview(album2)
self.view.addSubview(album3)
self.view.addSubview(album4)
//BUTTON ON TOP OF PHOTO ALBUM ICONS
self.button1.setTitle("BUGS", forState: UIControlState.Normal)
//button1.backgroundColor = UIColor.whiteColor()
self.view.addSubview(button1)
self.button2.setTitle("COOKING", forState: UIControlState.Normal)
//button2.backgroundColor = UIColor.whiteColor()
self.view.addSubview(button2)
self.button3.setTitle("CARS", forState: UIControlState.Normal)
//button3.backgroundColor = UIColor.whiteColor()
self.view.addSubview(button3)
self.button4.setTitle("BIRDS", forState: UIControlState.Normal)
//button4.backgroundColor = UIColor.whiteColor()
self.view.addSubview(button4)
// CAMERA ICON
camera1 = UIImageView()
camera1.image = camera
camera1.contentMode = .ScaleAspectFill
self.view.addSubview(camera1)
//camera1.backgroundColor = UIColor.redColor()
//CAMERA BUTTON
self.button5.setTitle("", forState: UIControlState.Normal)
//button5.backgroundColor = UIColor.whiteColor()
self.view.addSubview(button5)
//CAMERA LABEL
self.camLabel.text = "SNAP IT!"
self.camLabel.font = UIFont(name: "ChalkboardSE-Regular", size: 16)
self.camLabel.textAlignment = .Center
self.view.addSubview(camLabel)
//ARRAY FOR ALL VIEWS ON 1ST PAGE
let views:[UIView] = [catalogs, album1, album2, album3, album4, button1, button2, button3, button4, camera1, button5, camLabel]
//CONSTRAINTS FOR ALL VIEWS ON FIRST PAGE
constrain(views) { (_views) in
//HEADING CONTRAITS
_views[0].height == 50
_views[0].width == 210
_views[0].top == (_views[0].superview?.top)! + 20
_views[0].centerX == (_views[0].superview?.centerX)!
//ALBUM IMAGEVIEW CONSTRAINTS
_views[1].height == 180
_views[1].width == 180
_views[1].top == (_views[1].superview?.top)! + 55
_views[1].left == (_views[1].superview?.left)! + 0
_views[2].height == 180
_views[2].width == 180
_views[2].top == (_views[2].superview?.top)! + 55
_views[2].right == (_views[2].superview?.right)! + 0
_views[3].height == 180
_views[3].width == 180
_views[3].top == (_views[1].bottom) + 0
_views[3].left == (_views[3].superview?.left)! + 0
_views[4].height == 180
_views[4].width == 180
_views[4].top == (_views[2].bottom) + 0
_views[4].right == (_views[4].superview?.right)! + 0
//BUTTONS ON TOP OF IMGAGEVIEW CONSTRAINTS
_views[5].height == 60
_views[5].width == 82
_views[5].top == (_views[1].top) + 50
_views[5].left == (_views[5].superview?.left)! + 53.2
_views[6].height == 60
_views[6].width == 82
_views[6].top == (_views[2].top) + 50
_views[6].right == (_views[5].superview?.right)! - 46.5
_views[7].height == 60
_views[7].width == 82
_views[7].top == (_views[1].bottom) + 50
_views[7].left == (_views[5].superview?.left)! + 53.2
_views[8].height == 60
_views[8].width == 82
_views[8].top == (_views[2].bottom) + 50
_views[8].right == (_views[5].superview?.right)! - 46.5
//CAMERA ICON CONSTRAINTS
_views[9].height == 100
_views[9].width == 130
_views[9].bottom == (_views[9].superview?.bottom)! - 60
_views[9].centerX == (_views[9].superview?.centerX)!
//CAMERA BUTTON CONSTRAINTS
_views[10].height == 150
_views[10].width == 130
_views[10].bottom == (_views[9].superview?.bottom)! - 20
_views[10].centerX == (_views[9].superview?.centerX)!
//CAMERA LABEL CONSTRAINTS
_views[11].height == 20
_views[11].width == 80
_views[11].bottom == (_views[11].superview?.bottom)! - 47
_views[11].centerX == (_views[11].superview?.centerX)!
}
}发布于 2016-11-04 14:05:34
我注意到了几件事:
var button1 = UIButton()等等,有的地方有var x: Type等。在我看来,最好只做var button1: UIButton。这样,如果您忘记实例化/赋值,编译器就会对您大喊大叫。(基本上是免费的错误检查)。显然,如果您有要分配的默认值,那么就执行它。但是在这里,您只是实例化一个空的UIButton--如果您忘记分配它,这只会使您的程序崩溃。homePage()之前先给它打电话.我知道这在技术上是没有问题的,但它会导致您在从上到下阅读代码时跳转到代码中。这会在潜意识中使你的程序更难理解/维护,因为大多数人都学会了“按程序”编程。我认为大多数人并不严格地这么做,但至少对我来说,我就像"WTF是homePage()?“然后我必须向下滚动来看它,然后向上滚动,同时努力使所有的事情都在我的脑海中保持有序。还有一个似乎是我修复了˚的bug:
func homePage() {
//BACKGROUND COLOR
self.view.backgroundColor = UIColor.flatPowderBlueColor()
//TITLE
self.view.addSubview(catalogs)
self.catalogs.text = "MY ALBUMS"
self.catalogs.font = UIFont(name: "ChalkboardSE-Bold", size: 28)
self.catalogs.textAlignment = .Center要解决这个问题,需要将另一个}放在最底层。
而且,我对此不是100%,因为它似乎是另一个API,constrain(views) { (_views) in中的一个方法,但是一个简单的块可能更容易:
constrainViews: do {
//HEADING CONSTRAITS
views[0].height == 50希望这能帮上忙!
https://codereview.stackexchange.com/questions/146096
复制相似问题