您的位置:首页 > 移动开发 > IOS开发

ios mvc 中的view的界面的实现

2015-12-11 21:04 507 查看
1、纯粹代码

2、xib以及设置它的owner

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor blueColor];
        self.viewV.backgroundColor = [UIColor grayColor];
        self.viewV = [[[NSBundle mainBundle] loadNibNamed:@"ViewView" owner:self options:nil]firstObject];
        self.label.text = @"nihaoya";
//        [self.viewV addSubview:self.label];
       [self addSubview:self.viewV];
        NSLog(@"zhixing");
    }
    return self;
}

在owner类的代码文件中写入上面的代码进行初始化,这样我们在(使用view的时候就可以直接获取到view。(也就是上中国面的view实现绑定xib在对应的view)

上面的这种方式进行定义界面的工具的时候出现错误:

如下:

原自定义控件出现[super initWithCoder:aDecoder]崩溃问题解决

今天尝试了一下autolayout与storyboard/xib来做UI,用起来还是感觉蛮得心应手的,再也不用担心写繁琐的UI代码了。故此也打算今后用xib来实现自定义控件(UIView Subclass),不料在做一个小例子的过程中遇到一个崩溃问题,崩溃位置发生在[super initWithCoder:aDecoder]的地方。

查看崩溃时的调用堆栈,竟然有很多个initWithCoder:函数,感觉像是无限循环递归调用一样。根据这篇文章的答案,才发现是因为自己将xib中view的Custom Class设置为ChildView(自定义控件的名称,继承于UIView)。

实际上只需要将xib中File's Owner设置为ChildView就行了。

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIView 0x7f9b19d56800> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key midTitle.'

所以,不要搞混淆了。

3、使用声明为class的时候是使用,这里使用的是类方法。

+ (ViewView *) viewViewWithTitle:(NSString*)title{
    ViewView *viewView = [[[NSBundle mainBundle] loadNibNamed:@"ViewView" owner:nil options:nil] firstObject];
    viewView.translatesAutoresizingMaskIntoConstraints = NO;
    viewView.labelView.text = title;
    return viewView;
}
这个和我们经常使用的tableView中的代码重用设置的方式是一样的。

正是由于view界面的独立:我们经常会写代码文件+xib文件来写一些界面的工具,或者说是空间。写工具的时候,我们直接继承控件就好,eg:UIView,UIButton等等。

eg:类似tableView这样的或者IBinspectable这个关键字来实现在xib或者storyboard中设置显式设置属性。

不过我们经常也是会使用controller 直接创建以来的界面,所以vc就是一起的,view也就是一个单独的xib或者使用storyboard来实现都是可以的。

这个时候需要相应的方法实现初始化controller和view的xib界面进行绑定,也就是初始化的init……方法

这个方式进行初始化的时候可以查看链接如下:
http://blog.csdn.net/lvmaker/article/details/27177113
UIView中我们使用约束来进行对界面的拉伸,我们需要注意的有的时候拉伸应该多点关注约束的权限的优先级,

还有UIScrollView中我们拉伸约束的时候,注意放一个UIView在里面当contentView,这样就比较明显了。

还有今天突然明白了:UITableView其实就是UIScrollView,UIScrollView 其实就是UIView,也即是从子到父亲的关系,从复杂到简单的关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: