![](/img/trans.png)
[英]Without subclassing a UIView or UIViewController: possible to catch if a subview was added?
[英]Subclassing UIView/UIViewController
我的應用程序中需要很多自定義按鈕。 目前,我正在使用情節提要在我需要的每個控制器上定義這些按鈕。 但是,我覺得,由於我在整個應用程序中都需要它們,所以最好放一個將UIView
或UIViewController
子類化的視圖控制器/視圖,因此,如果我需要進行任何更改, UIViewController
需要執行一次即可,而不是在不同的視圖控制器中。 最好的方法是什么? 還可以告訴我如何以編程方式創建按鈕嗎? 這是我目前正在做的事情,並且我得到的是一個完全空白的屏幕。
-(void)viewDidAppear:(BOOL)animated
{
UIButton *testButton = [UIButton buttonWithType:UIButtonTypeCustom];
[testButton setFrame:CGRectMake(0, 390, 100, 40)];
[testButton setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
[setImage:[UIImage imageNamed:@"test_button"] forState:UIControlStateNormal];
[setImage:[UIImage imageNamed:@"test_button"] forState:UIControlStateHighlighted];
[setEnabled:YES];
[self.view addSubview:testButton];
}
您的按鈕有可能偏離可見區域。 對於以編程方式添加按鈕,您的操作基本上是正確的。 此外,圖像應具有文件擴展名。 由於要添加customButton,因此如果沒有圖像,則不會看到任何按鈕。 嘗試為按鈕添加標題,即使未添加圖像,標題也會顯示。
嘗試下面的代碼。
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated]; //you must have a good reason to not add this line.
UIButton *testButton=[UIButton buttonWithType:UIButtonTypeCustom];
[testButton setFrame:CGRectMake(0, 20, 100, 40)];
[testButton setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
[testButton setImage:[UIImage imageNamed:@"test_button.png"] forState:UIControlStateNormal];
[testButton setImage:[UIImage imageNamed:@"test_button.png"] forState:UIControlStateHighlighted];
[testButton setEnabled:YES];
[self.view addSubview:testButton];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.