1,创建UIView 的SubClass 命名为MyView

2, new一个名为MyView的xib

p1

3,配置xib的属性

p2

4,为View 添加背景色,添加一个按钮并定制按钮约束,这里我添加的约束为垂直居中,Button与View等宽,Button左边起点位置为0。

p3

5,设置xib中的File’s owner = MyView, 拖拽view 到关联的代码中命名为contentView

p4

6, 在storyboard 中对ViewController 添加一个View,之后把View 的class 设为MyView

7,MyView.m中添加代码

- (void)awakeFromNib

{

    NSLog(@"awake from nib");

    [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];

    [self addSubview:self.contentView];

}

这样执行后就可以看到该View了,但是会有一个严重的问题,那就是MyView 在显示时没有做到AutoLayout。仅仅是按照xib中的尺寸来显示,而在实际应用中可能我们会期待在ViewController中使用的自定义View内部亦可以自动匹配大小。

对于上面的问题,我的解决方法是重写setFrame方法,如下:

8,MyView.m中添加代码

- (void)setFrame:(CGRect)frame

{

    [super setFrame:frame];

    CGRect rect = frame;

    rect.origin.x = ;

    rect.origin.y = ;

    self.contentView.frame = rect;

}

StoryBoard中拖拽MyView IBOutLet到 ViewController中

p5

ViewDidLoad 中增加代码

 [self.myView setFrame:self.myView.frame];

如果你的自定view释放到了tableviewCell上面, 如图:

要是这样的话, 就要在tableviewCell的代码中的写:

// 如果有尺寸之类的要在该方法中写
- (void)layoutSubviews {
[super layoutSubviews];
// 让自定义view中的尺寸适应sb中的约束
[self.myView setFrame:self.myView.frame];
}

这样就可以让storyBoard 中设置的约束正确的影响到MyView。

iOS中 xib自定义View在storyboard中的使用的更多相关文章

  1. iOS 用xib自定义View

      网上有很多关于实现用xib自定义View,那我为什么还要写呢?第一,我用他们的方法都没有实现.第二,用xib遇到了很多问题,想分享给大家.    用xib自定义View:FHCustomView ...

  2. IOS 使用XIB 自定义View

    一般自定义View       代码方式 有 在初始化的时候添加 子Views - (id)initWithFrame:(CGRect)frame { self = [super initWithFr ...

  3. iOS 用xib自定义view控件 debug笔记

    1.在view不是很复杂的情况下,如果多次检查后依旧出现coding-compliant这种情况,干脆彻底删除这个xib重新新建一个xib来做一遍.(至今未明真相) 2.初始化xib中的view的大致 ...

  4. iOS 在UITableViewCell中加入自定义view时view的frame设定注意

    由于需要重用同一个布局,于是在cellForRowAtIndexPath中把自定义view加在了cell上,我是这样设定view的frame的 var screenFrame = UIScreen.m ...

  5. iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View

    一.自定义构造方法 有时候需要快速创建对象,可以自定义构造方法 + (instancetype)shopView { return [[self alloc] init]; } - (instance ...

  6. Android自定义View研究--View中的原点坐标和XML中布局自定义View时View触摸原点问题

    这里只做个汇总~.~独一无二 文章出处:http://blog.csdn.net/djy1992/article/details/9715047 Android自定义View研究--View中的原点坐 ...

  7. 详解iOS开发之自定义View

    iOS开发之自定义View是本文要将介绍的内容,iOS SDK中的View是UIView,我们可以很方便的自定义一个View.创建一个 Window-based Application程序,在其中添加 ...

  8. iOS开发小技巧--获取自定义的BarButtonItem中的自定义View的方法(customView)

    如果BarButtonItem是通过[[UIBarButtonItem alloc] initWithCustomView:(nonnull UIView *)]方法设置的.某些情况下需要修改BarB ...

  9. swift 之xib自定义view可视化到storyboard

    首先直入正题:@IBInspectable & @IBDesignable 对于 @IBInspectable 和 @IBDesignable 可详见官方文档 : Creating a Cus ...

随机推荐

  1. JAVA中的数据存储(堆及堆栈)

    转自:http://www.iteye.com/topic/6345301.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象 ...

  2. python中烦人的锟斤拷(\xef\xbf\xbd)

    首先要知道\xef\xbf\xbd是啥东西 >>> u'\uFFFD'.encode('utf-8') '\xef\xbf\xbd' 由此我们可以知道\xef\xbf\xbd是utf ...

  3. 22:django 配置详解

    django配置文件包含了你的django安装的所有配置信息,本节为大家详细讲解django的配置 基本知识 一个配置文件只是一个包含模块级别变量的的python模块,所有的配置变量都是大写的,哈哈哈 ...

  4. servlet为什么要配置web.xml

    (1).为Servlet命名:  <servlet>  <servlet-name>servlet1</servlet-name> <- 这是用于,在serv ...

  5. mysql大法

    mysql大法 MySQL 安装方式 1.rpm(yum) 2.源码包 3.通用二进制 企业中版本选择 5.6 5.7 选择 GA 6个月到1年之间的------------------------- ...

  6. HDU-2819

    Swap Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. pku 2777(经典线段树染色问题)

    Count Color Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 41202   Accepted: 12458 Des ...

  8. 计算机编码中的换行 CR与LF

    以下的文字为转载,但是有错误的地方,博主自行进行了修正和补充,用红色标示. 原文地址在这里. ------------ 转载起始 ------------- “回车”(Carriage Return) ...

  9. stl 学习笔记

    1. Erasing multiple objects from a std::vector https://stackoverflow.com/questions/3487717/erasing-m ...

  10. Android----APP性能优化

    性能优化的目标 快 如何让 app 在运行过程过不卡顿,运行流畅,速度快,也就是说如何解决卡顿呢?我们先看看那些因素影响卡顿? UI,包括ui的绘制,刷新等 启动,包括冷启动,热启动,温启动等 跳转, ...