从方法在任何视图控制器上创建UILabel

时间:2012-06-28 04:22:16

标签: iphone cocoa-touch uilabel

如果上传到Facebook的视频失败,我会调用一个方法。如果调用该方法,那么我希望UILabel能够在上传失败时用户碰巧打开的任何视图控制器中短暂出现。

这可能吗?

之前我曾就UIAlertView问过一个类似的问题,但我意识到在某些情况下警报会对用户体验产生负面影响。

2 个答案:

答案 0 :(得分:0)

你可以通过多种方式做到这一点 -

1)您可以将UILabel添加到您的应用主Window

2)如果您使用UINavigationController,则会获得当前viewcontroller的实例,然后可以将UILabel添加到其视图中。

3)如果您在这种情况下使用UITabBarController,则还可以通过访问viewcontroller选定的tabBarController来获取当前viewcontroller.的实例

答案 1 :(得分:0)

此代码我在下面发布的是来自facebook的HackBook示例应用。他们的表现与你想要的相似。

- (void)showMessage:(NSString *)message {
CGRect labelFrame = messageView.frame;
labelFrame.origin.y = [UIScreen mainScreen].bounds.size.height - self.navigationController.navigationBar.frame.size.height - 20;
messageView.frame = labelFrame;
messageLabel.text = message;
messageView.hidden = NO;

// Use animation to show the message from the bottom then
// hide it.
[UIView animateWithDuration:0.5
                      delay:1.0
                    options: UIViewAnimationCurveEaseOut
                 animations:^{
                     CGRect labelFrame = messageView.frame;
                     labelFrame.origin.y -= labelFrame.size.height;
                     messageView.frame = labelFrame;
                 }
                 completion:^(BOOL finished){
                     if (finished) {
                         [UIView animateWithDuration:0.5
                                               delay:3.0
                                             options: UIViewAnimationCurveEaseOut
                                          animations:^{
                                              CGRect labelFrame = messageView.frame;
                                              labelFrame.origin.y += messageView.frame.size.height;
                                             //    UIView *messageView; declared in header
                                              messageView.frame = labelFrame;
                                          }
                                          completion:^(BOOL finished){
                                              if (finished) {
                                                  messageView.hidden = YES;
                                                  messageLabel.text = @"";
                                              }
                                          }];
                     }
                 }];
 }