как смотреть видео в ландшафтном режиме на айфоне

кто-нибудь, помогите мне, я не использую MPMoviePlayerController шутку, я привязываюсь к UItableView в четырех ячейках

#import "VSChannelListViewController.h"
#import "VSPlayerViewController.h"

@interface Channel : NSObject {
    NSString *_name;
    NSString *_urlAddress;
    NSString *_description;
    NSDictionary *_options;
}

@property (nonatomic, readonly) NSString *name;
@property (nonatomic, readonly) NSString *urlAddress;
@property (nonatomic, readonly) NSString *description;
@property (nonatomic, readonly) NSDictionary *options;

+ (id)channelWithName:(NSString *)name addr:(NSString *)addr description:(NSString *)description options:(NSDictionary *)options;
- (id)initWithName:(NSString *)name addr:(NSString *)addr description:(NSString *)description options:(NSDictionary *)options;

@end

@implementation Channel

@synthesize name = _name;
@synthesize urlAddress = _urlAddress;
@synthesize description = _description;
@synthesize options = _options;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        self.title = @"Channel List";
        _channelList = [[NSMutableArray array] retain];

       Channel *c1 = [Channel channelWithName:@"TEST" addr:@"rtsp://202.65.154.103:1935/live/text.stream" description:@"justin reporter" options:[NSDictionary dictionaryWithObject:VSDECODER_OPT_VALUE_RTSP_TRANSPORT_TCP forKey:VSDECODER_OPT_KEY_RTSP_TRANSPORT]];
        [_channelList addObject:c1];

        Channel *c2 = [Channel channelWithName:@"Cartoon TV" addr:@"rtsp://ws2.gpom.com/cartoon" description:@"justin reporter Pavan" options:[NSDictionary dictionaryWithObject:VSDECODER_OPT_VALUE_RTSP_TRANSPORT_TCP forKey:VSDECODER_OPT_KEY_RTSP_TRANSPORT]];
        [_channelList addObject:c2];

        Channel *c3 = [Channel channelWithName:@"Sky-news" addr:@"rtsp://202.65.154.103:1935/live/text.stream" description:@"justin reporter Alapati" options:[NSDictionary dictionaryWithObject:VSDECODER_OPT_VALUE_RTSP_TRANSPORT_TCP forKey:VSDECODER_OPT_KEY_RTSP_TRANSPORT]];
        [_channelList addObject:c3];

     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onVSPlayerStateChanged:) name:kVSPlayerStateChangedNotification object:nil];
    }
      return self;
;
}

а затем с помощью методов tableView

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [_channelList count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellId = @"CellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    if (!cell) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellId] autorelease];

        UIView *topLine = [[[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [UIScreen mainScreen].bounds.size.height, 1.0f)] autorelease];
        topLine.backgroundColor = [UIColor colorWithRed:1.1 green:1.1 blue:1.11 alpha:0.5];
        [cell.contentView addSubview:topLine];

        UIView *bottomLine = [[[UIView alloc] initWithFrame:CGRectMake(0.0f, 63.0f, [UIScreen mainScreen].bounds.size.height, 1.0f)] autorelease];
        bottomLine.backgroundColor =[UIColor colorWithRed:0.78 green:0.78 blue:0.79 alpha:0.5];
        [cell.contentView addSubview:bottomLine];

        cell.selectionStyle = UITableViewCellSelectionStyleGray;
        cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:18];
        cell.detailTextLabel.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:16];
    }

    Channel *channel = [_channelList objectAtIndex:indexPath.row];
    cell.textLabel.text = [channel name];
    cell.detailTextLabel.text = [channel description];

    return cell;
}

- (void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath {
    cell.backgroundColor = [UIColor colorWithRed:0.94 green:0.94 blue:0.95 alpha:1.0];
}

а затем с помощью didSelectRowAtIndexPath в

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    Channel *channel = [_channelList objectAtIndex:indexPath.row];
    NSString *urlString = [channel urlAddress];
    NSDictionary *options = [channel options];

    VSPlayerViewController *playerVc = [[[VSPlayerViewController alloc] initWithURL:[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] decoderOptions:options] autorelease];
    playerVc.barTitle = [channel name];
    playerVc.statusBarHidden = YES;

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000
    if ([[[UIDevice currentDevice] systemVersion] compare:@"6.0" options:NSNumericSearch] != NSOrderedAscending) {
        //running on iOS 6.0 or higher
        [self.navigationController presentViewController:playerVc animated:YES completion:NULL];
    } else {
        //running on iOS 5.x
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 60000
        [self.navigationController presentModalViewController:playerVc animated:YES];
#endif
    }
#else
    [self.navigationController presentModalViewController:playerVc animated:YES];
#endif

}

при нажатии TableViewCell он открывается и воспроизводит видео в портретном режиме с использованием протокола RTSP, но мое требование: при нажатии TableViewCell он открывается и воспроизводит видео в ландшафтном режиме без мобильного вращения. Пожалуйста, дайте любую идею.


person Pavan Alapati    schedule 13.06.2014    source источник
comment
Поместите этот код ссылки stackoverflow.com/questions/19095161/force-landscape- ios-7 в класс VSPlayerViewController   -  person Bhumeshwer katre    schedule 13.06.2014


Ответы (1)


В классе VSPlayerViewController метод viewWillAppear/viewDidLoad:

//rotate rect
self.view.transform = CGAffineTransformMakeRotation(M_PI_2); 

Надеюсь это поможет.

person Mrunal    schedule 13.06.2014
comment
пожалуйста, посмотрите мой код, как только VSplayerViewController в классе я не использую метод ViewDidLoad Пожалуйста, помогите мне - person Pavan Alapati; 13.06.2014
comment
Попробуйте добавить эту строку кода в метод ViewDidLoad файла VSPlayerViewController.mm. Код, который вы добавили, взят из файла Channel.mm. - person Mrunal; 13.06.2014
comment
k я разместил так в реализации Channel - (void)viewDidLoad { [super viewDidLoad]; self.view.transform = CGAffineTransformMakeRotation(M_PI_2) }, но я получил сообщение об ошибке: представление свойств не найдено для объекта типа Channel - person Pavan Alapati; 13.06.2014
comment
у меня нет файла VSPlayerViewController.mm - person Pavan Alapati; 13.06.2014
comment
Затем напишите этот код везде, где реализован класс VSPlayerViewController. В этом разделе будет метод viewDidLoad. - person Mrunal; 13.06.2014
comment
k я попробую, но, пожалуйста, посмотрите мой код, а затем скажите, где я разместил вашу строку в моем коде - person Pavan Alapati; 13.06.2014
comment
уже проголосовали за вашу небольшую проблему, когда в портретном режиме воспроизведения видео у него есть кнопка «Готово», но в ландшафтном режиме воспроизведения видео она не отображается. Пожалуйста, помогите мне, как вернуться к TableView - person Pavan Alapati; 13.06.2014