IOS 使用XIB 自定義View
阿新 • • 發佈:2019-01-04
一般自定義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];
專案檔案: http://download.csdn.net/detail/li6185377/4705401