在XIB中淡入/淡出UISegmentedControl

时间:2012-08-29 06:18:00

标签: ios xcode xib

我在XIB中设置了UISegmentedControl。我希望它出现在viewDidLoad上,如果用户点击它所在的屏幕区域,然后如果用户再次点击它就会消失,或者如果用户不管它就淡出。

在四处寻找如何管理这个问题时,我发现了许多关于淡化UIViews的东西,但没有那么多关于淡化个别子视图的东西,也没有关于XIB中淡化元素的东西。我试图调整UIView的东西,但失败了。

我该如何做到这一点?

编辑:好的,我已经在viewDidLoad和淡出工作了。但是当用户点击UISegmentedControl所在的区域(现在因为alpha = 0而不可见)时,没有任何反应。这是我正在使用的代码:

- (IBAction)tapInvisibleSegContr
//This is connected to the UISegmentedControl with the action Touch Up Inside.  Until now, the segmented control has been at alpha=0 since fading after viewDidLoad.
{
    self.segContrAsOutlet.alpha=1.0;
    [self fadeMethodThatWorksInViewDidLoad];
    NSLog(@"Yup, tapped.");
}

我甚至没有获得NSLog。我已经将动作连接到UISegmentedControl,其动作是Touch Up Inside。我错过了什么?

2 个答案:

答案 0 :(得分:3)

如果它驻留在xib中,只需将其alpha设置为0,执行正确的连接:出口和IBAction值更改为
然后在viwDidLoad之后的[super viewDidLoad]写一下:

[UIView animateWithDuration:1 animations:^{self.mySegOutlet.alpha = 1;}];

在最后一次}写入之前编写答案之后,立即进入IBAction:

[UIView animateWithDuration:1 animations:^{self.mySegOutlet.alpha = 0;}];

这是最简单的方法。
再见

答案 1 :(得分:1)

在xib中将控件的alpha设置为0.0,然后使用UIView动画方法将其alpha动画设为1.0。例如:

[UIView animateWithDuration:1.0 animations:^{
    self.segmentedControl.alpha = 1.0f;
}];

编辑:对于没有调用操作的问题,尝试将其附加到值更改控件事件 - 我不认为UISegmentedControl发送内部修饰。