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];
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?