如何在IOS中使用Swift设计我自己的视图

时间:2015-11-11 17:26:07

标签: ios swift

今天,我意识到对于MVC,我们可以构建Model,我们可以使用我们的Controller。但是,似乎我没有尝试设计自己的View,而只是使用IOS SDK提供的默认View

请您考虑一下这个案例: 考虑tableView的标题,

1.我想在其中放一个按钮

2.并使标题更大,以包含一些细节标签。

3.也让Header的背景变为UIColor.blueColor()

我尝试创建一个类(MyHeaderView)扩展形式UITableViewHeaderFooterView,我知道MyTableViewController中有一个属性是Header的条目我可以为自己的设计类对象分配一个新对象 - MyHeaderView。我对吗?这就是我的想法,但我只是尝试了第三个要求(将背景改为蓝色):

MyHeaderView内,我定义了一个函数:

class MyHeaderView: UITableViewHeaderFooterView {

    func change(){
        self.backgroundColor = UIColor.blackColor()
    }
}

和里面

class MyTableViewController: UITableViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let frame = CGRectMake(0, 0, 1000, 1000)// Big enough!
        var a = MyHeaderView(frame: frame)
        a.change()
        self.view.addSubview(a)// To be frank, I believe this statement is not right for achieving this requirement
    }
}

当然它根本不起作用!像这样: enter image description here

  

有人能告诉我一些关于如何自定义我自己的观点的信息!   谢谢! (如果我不清楚自己,请帮助我指出:D我   将尽快提供更多详细信息)

2 个答案:

答案 0 :(得分:2)

我想你可能有兴趣阅读这本书"编程iOS 9"作者:Matt Neuburg,特别是分章"表视图和集合视图"。

单元格页眉或页脚分别出现在单元格之间,分段的第一行之前或部分的最后一行之后。

不要将页眉和页脚与页面的页眉和页脚整体混淆。后者是表视图本身的视图属性,它的 tableHeaderView tableFooterView 。只有当表格一直向下滚动时才会出现表头;只有当表格一直向上滚动时,才会显示表格页脚。

因此,回到您尝试自定义表格部分视图(我假设的),您可能会发现这些提取的信息很有用:

UITableViewHeaderFooterView 类是一个 UIView 子类,专门用作页眉或页脚的视图;很像一个表视图单元格,它是可重用的。它具有以下属性:

  • textLabel - 用于显示标题文本的标签(UILabel)或 页脚。
  • detailTextLabel - 如果您设置了文字,此标签只会显示在分组的样式表中。
  • contentView - 页眉或页脚的子视图,您可以向其添加自定义子视图。如果你这样做,你可能不应该使用内置的textLabel; textLabel不在contentView中,在某种意义上不属于你。
  • backgroundView - 您要分配的任何视图。 contentView位于backgroundView前面。默认情况下,contentView具有清晰的背景,因此backgroundView显示通过。另一方面,不透明的contentView.backgroundColor会完全遮蔽backgroundView。如果backgroundView为nil(默认值),则页眉或页脚视图将提供其自己的背景视图,其backgroundColor是从表的backgroundColor派生的(以某种令人讨厌的方式)。

实现委托方法 tableView:viewForHeaderInSection:或tableView:viewForFooterInSection :(或两者)。您提供的视图用作整个页眉或页脚,并自动调整为表格的宽度和节页眉或页脚高度。

您不需要返回 UITableViewHeaderFooterView ,但您可能希望这样做,以便利用可重用性。要做到这一点,程序就像使细胞可重复使用一样。您可以通过调用 registerClass:forHeaderFooterViewReuseIdentifier:预先注册表视图。要提供可重用的视图,请发送表视图 dequeueReusableHeaderFooterViewWithIdentifier:;结果将是新实例化的视图或重用的视图。

此外,两对委托方法允许您对页眉或页脚视图执行最终配置:

tableView:willDisplayHeaderView:forSection: 
tableView:willDisplayFooterView:forSection:

tableView:heightForHeaderInSection: 
tableView:heightForFooterInSection:

作为奖金,Matt警告的另一个怪癖是:

不要设置UITableViewHeaderFooterView的backgroundColor;相反,设置其contentView的backgroundColor,或者指定backgroundView并根据需要进行配置。另外,设置其tintColor无效。

答案 1 :(得分:1)

您可以在Interface Builder中执行此操作。

只需在表格视图的上方和下方拖动UIView,更改背景颜色,高度,添加IBOutlets等。