一般自定義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