2012-11-14 42 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中创建游戏。我通过将标记更改为

相关问题