2012-11-14 72 views
13

就像我說的,我在界面生成器中添加了一個UIButton,我想添加一個UILabel,UIImageView作爲按鈕的子視圖,但是我不能在它上面添加任何對象。有人知道如何做到這一點?非常感謝你。如何在界面生成器中將UButton添加到UIButton

我可以使用代碼來實現,但我想在IB中實現它,所以我可以在任何我想要的類中使用它。

+0

你不需要爲此使用自定義的'UILabel'子類嗎? – trojanfoe

回答

17

我已經通過添加UIView(而不是UIButton)來完成此操作,然後將UIButton和UILabel添加到UIView。來自UIButton的水龍頭仍然有效,你也有一個標籤。你也可以添加這樣的其他東西。

+0

完美!感謝Fogmeister.Done! – tinln

+0

這似乎是最簡單的,它不需要代碼,不會影響佈局,保存額外的成幀視圖。自定義按鈕方法對我無效。 –

+2

但是,然後該按鈕不顯示突出顯示的狀態。當用戶點擊它時,它看起來不像是一個按鈕,因爲它沒有被突出顯示。有沒有辦法保持這個亮點?或者以某種方式創建它? – RedRoses

1

而不是UIButton,將UILabel和UIImageView添加到UIView,然後添加一個tap操作。

編輯1:

很容易改變做出了高亮顏色效果,使用下面的代碼:

- (void) onViewTap:(id)sender 
{ 
    [UIView animateWithDuration:0.1 
          delay:0 
         options:UIViewAnimationOptionCurveEaseOut 
        animations:^{ 
         _view.backgroundColor = [UIColor blueColor]; 
        } 

        completion:^(BOOL finished){ 
         _view.backgroundColor = [UIColor whiteColor]; 
        }]; 

    //write tap actions below 
} 
- (void)viewDidLoad 
{ 
    _view.userInteractionEnabled = YES; 
    UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onViewTap:)]; 
    [_view addGestureRecognizer:tap]; 
} 
+0

感謝Mhdali,這是一個好主意,我已經嘗試過,並且發現我不能讓UIView看起來像UIButton的狀態,就像我觸碰UIButton時,UIButton顯示突出顯示的顏色...並且我真的想使用UIButton的屬性。 – tinln

+0

看到上面的編輯^ – Mhdali

0

讓您的UIButton的自定義按鈕,然後添加的UILabel就可以了,那麼你將受益於UIButton屬性和操作,希望這對你有所幫助

+0

抱歉的男人,不能這樣做,謝謝你一樣。我創建了一個新的.xib文件,在這個IB中,我只創建了一個UIButton,就像我說的,我想把一個UILabel和一個UIImageView作爲UIButton的子視圖。 Mhdali和Fogmeister幫助我處理這個問題。 – tinln

+2

這種方法對我不起作用 - IB仍然不會讓我嵌套標籤。 (FWIW) –

2

我通常由

  1. 實現這一創建在Interface Builder一個新的UIView,並將其設置爲你想要你的按鈕有
  2. 添加您的子視圖是UIView的相同的大小和位置
  3. 設置了UIView的類UIButton的中恆等式檢查

你的UIView現在工作完全像一個UIButton

+1

沒有在這裏工作。鏈接到UIButton的動作永遠不會被調用。 – Colas

+0

非常好,這是贏家。像往常一樣可以像常規按鈕一樣啓用/禁用,僅限IB。我猜測Colas沒有啓用UserInteraction。 –

+0

這樣做有副作用。故事板文件中的元素保留爲 ...,但是具有CustomClass =「UIButton」。這意味着ctrl點擊 - 拖動不允許在Interface Builder中創建遊戲。我通過將標記更改爲

相關問題