IOS 使用XIB 自定义View

一般自定义View       代码方式 有

      在初始化的时候添加 子Views

 

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // add subviews
    }
    return self;
}

还有种 是自己画。 重载   

- (void)drawRect:(CGRect)rect {

}

如果  布局复杂的话  这种代码方式  可以郁闷死人   看不到效果,慢慢调 ,代码冗长。。。  所以可以用到 XIB 来进行布局。

  UIViewController   是我以前用的法子    但是  我只是想用到 View    用个View 每次都还要跟个Controller 。 还要保存他  不让他被释放  。。。    

 

所以嘞  我找了个新方法   使用XIB 但不使用ViewController 当他的载体 let go

在你项目中 新建个 类   继承UIView

在新建个XIB   XIB 的名称要跟 你新建 类名 一样

在XIB 中 选中View  改它Class 为你建的 类名

 然后  你就可以在上面拖来拖去     就按ViewController 中的来就是    你可以发现 IBOUT 中 Object  变成了  你的类

 

 

最后 改下 View 的Autosizing 项

 

要使用这个UIView  跟平常就不一样了  因为  不是我们来  实例化它     

平常我就通过 这个静态方法 来实例化

 

+(LKTextView *)instanceTextView
{
    NSArray* nibView =  [[NSBundle mainBundle] loadNibNamed:@"LKTextView" owner:nil options:nil];
    return [nibView objectAtIndex:0];
}

如果你要加点什么东西  就重载 initWithCoder 

 

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if(self)
    {
        //you init
    }
    return self;
}


使用的方法:

 

LKTextView* text = [LKTextView instanceTextView];
    text.frame = CGRectMake(100, 100, text.frame.size.width, text.frame.size.height);
    text.textView.text = @"input ";
   [self.view addSubview:text];
posted @   孙富有(iOS工程师)  阅读(1495)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
点击右上角即可分享
微信分享提示