Контроллер iPhone для управления аудиоплеером? - PullRequest
0 голосов
/ 14 ноября 2010

У меня короткий аудиоклип, который воспроизводится при нажатии кнопки. Я хочу создать сдвижной контроллер снизу, который содержит кнопку паузы / воспроизведения и ползунок, отображающий длину звука. Я также хочу, чтобы представление позади контроллера оставалось прокручиваемым, пока контроллер виден. Я полагаю, что это исключает использование UIAlertView или UIActionSheetView, так как оба приводят к тому, что представление ниже остается статичным. Каков наилучший способ реализовать это?

РЕДАКТИРОВАТЬ: я нашел полезное руководство здесь: http://iosdevelopertips.com/user-interface/sliding-views-on-and-off-screen-creating-a-reusable-sliding-message-widget.html

и я смог изменить это, чтобы получить то, что я хочу. Однако, если я хотел бы анимировать, используя файл пера, где / как я бы назвал это?

#import "SlidingMessageController.h"


@interface SlidingMessageController(private)
- (void)hideMsg;
@end

@implementation SlidingMessageController
#pragma mark -
#pragma mark Private Methods


- (void)hideMsg;
{
    // Slide the view off screen
    CGRect frame = self.frame;

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.75];

    frame.origin.y = 480;
    frame.origin.x = 0;
    self.frame = frame;

    //to autorelease the Msg, define stop selector
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

    [UIView commitAnimations];
}

- (void)animationDidStop:(NSString*)animationID finished:(BOOL)finished context:(void *)context 
{
    [self removeFromSuperview];
    [self release];
}

#pragma mark -
#pragma mark Initialization

- (id)initWithDirection:(int)dir;
//- (id)initWithTitle:(NSString *)title message:(NSString *)msg
{
  if (self = [super init]) 
  {
      //Switch direction based on slideDirection konstant
      switch (dir) {
          case kSlideUp:    //slideup
              // Notice the view y coordinate is offscreen (480)
              // This hides the view

              // What should I be doing here if I want to get the nib file???       
              self.frame = CGRectMake(0,480,320, 90);
              [self setBackgroundColor:[UIColor blackColor]];
              [self setAlpha:.87];


              newY = 380;
              newX = 0;
              myDir = 0;
              break;
              default:
              break;
      }


  }

  return self;
}

#pragma mark -
#pragma mark Message Handling

- (void)showMsgWithDelay:(int)delay
{
//  UIView *view = self.view;
    CGRect frame = self.frame;
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.75];

    // Slide up based on y axis
    // A better solution over a hard-coded value would be to
    // determine the size of the title and msg labels and 
    // set this value accordingly

    frame.origin.y = newY;
    frame.origin.x = newX;
    self.frame = frame;

    [UIView commitAnimations];

    // Hide the view after the requested delay
    [self performSelector:@selector(hideMsg) withObject:nil afterDelay:delay];

}

#pragma mark -
#pragma mark Cleanup

- (void)dealloc 
{
  if ([self superview])
    [self removeFromSuperview];
  [super dealloc];
}

@end

1 Ответ

2 голосов
/ 14 ноября 2010

Что вы имеете в виду под «контроллером сдвига»? Просто вид, который скользит снизу вверх? Если это так, вы можете просто создать UIView с кнопками и анимировать его. Для анимации вы можете использовать UIView beginAnimations:context: и commitAnimations.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...