首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分类相册

分类相册
EN

Code Review用户
提问于 2016-11-04 02:40:27
回答 1查看 105关注 0票数 3

有人告诉我,“主页”这个函数太笨重,无法方便地制作桌面视图。单元格将在“相册图标”和“相册图标顶部的按钮”中显示信息。

代码语言:javascript
复制
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)!


        }


    }
EN

回答 1

Code Review用户

发布于 2016-11-04 14:05:34

我注意到了几件事:

  1. 有的地方有var button1 = UIButton()等等,有的地方有var x: Type等。在我看来,最好只做var button1: UIButton。这样,如果您忘记实例化/赋值,编译器就会对您大喊大叫。(基本上是免费的错误检查)。显然,如果您有要分配的默认值,那么就执行它。但是在这里,您只是实例化一个空的UIButton--如果您忘记分配它,这只会使您的程序崩溃。
  2. 你在定义homePage()之前先给它打电话.我知道这在技术上是没有问题的,但它会导致您在从上到下阅读代码时跳转到代码中。这会在潜意识中使你的程序更难理解/维护,因为大多数人都学会了“按程序”编程。我认为大多数人并不严格地这么做,但至少对我来说,我就像"WTF是homePage()?“然后我必须向下滚动来看它,然后向上滚动,同时努力使所有的事情都在我的脑海中保持有序。
  3. 你的一些间距有点不一致。我知道这可能会很痛苦(尤其是在Xcode中)。但是有时你用一个空行结束一个块,然后是一个注释,然后是两个空行,而另一些时候你用两个空行,一个注释,然后一个空行来结束一个块。像这样的东西可能会更好: //做东西--数学().do().moreMath() //做更多的数学().do().moreMath()或: // Mathtime!:.do().do().do()/.do()/休息时间!.do()

还有一个似乎是我修复了˚的bug:

代码语言:javascript
复制
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中的一个方法,但是一个简单的块可能更容易:

代码语言:javascript
复制
constrainViews: do {

    //HEADING CONSTRAITS

    views[0].height == 50

希望这能帮上忙!

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/146096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档