UIview.hidden不会消失但隐藏在另一个视图后面

时间:2018-05-26 09:14:21

标签: ios objective-c xcode

所以我试图隐藏UIView,但发生了一些奇怪的事情。使用这行代码后:

shouldComponentUpdate

视图不会消失,但它隐藏在另一个UIView背后。

这是我使用的完整代码:

ntcCircleView.hidden = YES;

隐藏它之后的 ntcCircleView ,只是落后于 notificationImage

让我疯狂的是,我在另一个视图中成功使用完全相同的代码,唯一的区别是最后一行。而不是使用:

UIView* NtcContainer=[[UIView alloc]initWithFrame:CGRectMake(self.view.frame.size.width - 40-17, 3, 40, 40)];
UIView* NtcView=[[UIView alloc]initWithFrame:CGRectMake(5, 0, 40, 40)];


notificationButton  = [ZFRippleButton buttonWithType:UIButtonTypeCustom];
notificationButton.frame = CGRectMake(0, 0, 40, 40);
notificationButton.layer.cornerRadius=menuButton.frame.size.width/2;
[notificationButton addTarget:self action:@selector(goToNotificationsList:) forControlEvents:UIControlEventTouchUpInside];
notificationImage=[[UIImageView alloc]initWithFrame:CGRectMake(10, 12, 20, 20)];
notificationImage.image=[UIImage imageNamed:[HotelStay sharedInstance].icon.Notification];

ntcCircleView = [[UIView alloc] initWithFrame:CGRectMake(20,5,16,16)];
ntcCircleView.alpha = 0.7;
ntcCircleView.layer.cornerRadius = ntcCircleView.frame.size.width/2;  // half the width/height
ntcCircleView.backgroundColor = [UIColor redColor];

ntcNumberLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,16,16)];
ntcNumberLabel.textAlignment = NSTextAlignmentCenter;
[ntcNumberLabel setTextColor:[UIColor whiteColor]];
[ntcNumberLabel setFont:[UIFont fontWithName:@"HelveticaNeue" size:11.0]];

[ntcCircleView addSubview:ntcNumberLabel]; 
int ntcNum = [dataManager getUnreadNotificationNumber];
if (ntcNum==0)
{
    ntcCircleView.hidden = YES;
}else
{
    ntcNumberLabel.text = [NSString stringWithFormat:@"%i",ntcNum];
}

[NtcView addSubview:notificationImage];
[NtcView addSubview:notificationButton];
[NtcView addSubview:ntcCircleView];
[NtcContainer addSubview:NtcView];

[self.view addSubview:NtcContainer];

我将视图添加到导航栏,如下所示:

[self.view addSubview:NtcContainer];

我在这里缺少什么?

更新

我也注意到只有在我使用

时才会发生此错误
UIBarButtonItem *ntcBarItem = [[UIBarButtonItem alloc] initWithCustomView:NtcContainer];
self.navigationItem.rightBarButtonItem = ntcBarItem;

导航回视图。

2 个答案:

答案 0 :(得分:1)

您需要更新以下代码段:

[NtcView addSubview:notificationImage];
[NtcView addSubview:notificationButton];
[NtcView addSubview:ntcCircleView];
[NtcContainer addSubview:NtcView];

为:

[NtcView addSubview:notificationButton];
[NtcView addSubview:ntcCircleView];
[NtcView addSubview:notificationImage];
[NtcContainer addSubview:NtcView];

它将解决您的问题。

答案 1 :(得分:0)

我明白了。我正在使用不推荐使用的方法(viewDidUnload)来释放通知观察者。