我在Xcode中设计我的UI时遇到了问题。
我以编程方式创建(按下按钮时)UIImageView(黑色,透明叠加),UITextView(可编辑)和UIButton以清除这两个以前的UISubviews。
这个问题都出现在模拟器和我的iPhone上。
这是我的代码
- (IBAction)openCommentTextView:(id)sender {
doneButton = [[UIButton alloc] initWithFrame:CGRectMake(20, 40, 60, 35)];
doneButton.alpha = 0.0;
doneButton.layer.cornerRadius = 7;
doneButton.layer.borderColor = [[UIColor colorWithWhite:1.0 alpha:1.0] CGColor];
doneButton.layer.borderWidth = 3;
[doneButton setTitle:@"Done" forState:UIControlStateNormal];
[doneButton setTitleColor:[UIColor colorWithWhite:1.0 alpha:1.0] forState:UIControlStateNormal];
doneButton.titleLabel.font = [UIFont fontWithName:@"AvenirNext-Regular" size:15];
[doneButton addTarget:self action:@selector(finishEditing:) forControlEvents:UIControlEventTouchUpInside];
commentTextView = [[UITextView alloc] initWithFrame:CGRectMake(20, 90, 280, 230)];
[commentTextView becomeFirstResponder];
commentTextView.alpha = 0.0;
if ([commentsTextViewViewer.text isEqual: @"Comment..."]) {
commentsTextViewViewer.text = @"";
} else {
commentTextView.text = commentsTextViewViewer.text;
}
commentTextView.keyboardAppearance = UIKeyboardAppearanceDark;
commentTextView.layer.cornerRadius = 7;
commentTextView.font = [UIFont fontWithName:@"GillSans" size:20];
commentTextView.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.4];
backgroundOverlay = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 330, 568)];
backgroundOverlay.backgroundColor = [UIColor colorWithWhite:0.0 alpha:1.0];
backgroundOverlay.alpha = 0.0;
[self.view insertSubview:doneButton atIndex:11];
[self.view insertSubview:commentTextView atIndex:10];
[self.view insertSubview:backgroundOverlay atIndex:9];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
commentTextView.alpha = 1.0;
doneButton.alpha = 1.0;
[UIView commitAnimations];
[UIView setAnimationDuration:0.3];
backgroundOverlay.alpha = 1.0;
[UIView commitAnimations];
}
然而,不知何故,UIButton(doneButton)和UITextView(commentTextView)位于UIImageView(黑色叠加层)之下。 UIButton和UITextView都响应。 (我将UIImageView(黑色叠加)alpha设置为1.0
,并且UIButton和UITextView没有出现,尽管两者都有回应)
结果就像this一样(抱歉,我无法将图片直接包含在这里......我没有足够的声誉)
但是当我复制这段代码并粘贴到一个新的单视图应用程序时,它完全按照我的意愿工作。 (like this)
我真的不知道为什么会发生这种情况......我已经在网上搜索过但没有成功。
这与XCode或我的iPhone本身有关吗?
如果有人可以帮我解决这个问题,我会非常高兴。
谢谢。
答案 0 :(得分:1)
可能会有所帮助的一些事情。除了索引atIndex:
之外,我在0
视图插入方法方面从来没有太多运气。尝试使用相对位置,因为您知道按钮和textview需要在背景覆盖之上。
[self.view addSubview:backgroundOverlay];
[self.view insertSubview:doneButton aboveSubview:backgroundOverlay];
[self.view insertSubview:commentTextView aboveSubview:backgroundOverlay];
此外,在动画第二位代码之前,您需要再次调用[UIView beginAnimations:nil context:nil];
。或者,如果您定位iOS 4或更高版本,请使用推荐的UIView animation blocks。