子类UIView在动画帧后没有正确显示



我将UIView子类化为包含一个UIPickerView和一个UIToolbar

当用户在选择器中选择特定行时,我将在选择器上添加UIImageView。然而,这个图像是不可见的,当我动画我的UIView滑动屏幕。如果我不给UIView添加动画,那么它会正常显示。

我像这样显示UIImageView(在UIView中):

- (void)showMailSetupPopover {
    if (self.popoverMailSetupImageView == nil) {
        UIImageView *popoverMailSetupImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"popover-mail-setup-addreminder"]];
        popoverMailSetupImageView.alpha = 0.0;
        popoverMailSetupImageView.frame = CGRectMake(8, self.frame.origin.y + 65, popoverMailSetupImageView.bounds.size.width, popoverMailSetupImageView.bounds.size.height);
        self.popoverMailSetupImageView = popoverMailSetupImageView;
    }
    [self addSubview:self.popoverMailSetupImageView];
    [UIView animateWithDuration:0.5 animations:^{
        self.popoverMailSetupImageView.alpha = 1.0;
    } completion:^(BOOL finished) {}];
}

这是我如何将UIView添加到self.view:

RMMessageTypePickerView *messageTypePickerView = [[RMMessageTypePickerView alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height, 320, 260) reminderMessageType:RMReminderMessageTypeText delegate:self];
self.messageTypePickerView = messageTypePickerView;
[self.view addSubview:self.messageTypePickerView];
[UIView animateWithDuration:0.2 animations:^{
    self.messageTypePickerView.frame = messageTypePickerViewTargetFrame;
    self.addReminderTableView.frame = addReminderTableViewTargetFrame;
} completion:^(BOOL finished) {
    if (firstShow) {
        [self processSelectedMessageTypeRow:RMReminderMessageTypeText];
    }
}];

找到问题了,

取代

popoverMailSetupImageView.frame = CGRectMake(8, self.frame.origin.y + 65, popoverMailSetupImageView.bounds.size.width, popoverMailSetupImageView.bounds.size.height);

popoverMailSetupImageView.frame = CGRectMake(8, 65, popoverMailSetupImageView.bounds.size.width, popoverMailSetupImageView.bounds.size.height);

不需要self.frame.origin.y

最新更新