我正在使用以下嵌入代码在IOS上嵌入我的YouTube视频
- (NSString*)embedYouTube:(NSString*)youtube_id frame:(CGRect)frame {
NSString* embedHTML = @"\
<html><head>\
<style type=\"text/css\">\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
<iframe src=\"http://www.youtube.com/embed/%@?rel=0\" frameborder=\"0\" allowfullscreen width=\"%0.0f\" height=\"%0.0f\"></iframe>\
</body></html>";
NSString *html = [NSString stringWithFormat:embedHTML, youtube_id, frame.size.width, frame.size.height];
return html;
}
//code to embed video
NSString *contentHTML;
if (currentAnswer.youtube_id != nil) {
contentHTML = [self embedYouTube:currentAnswer.youtube_id frame:CGRectMake(CELL_TEXT_LEFT_MARGIN + CELL_AVATAR_WIDTH + CELL_SPACING, currentYAxisValue, CELL_YOUTUBEVIEW_WIDTH, CELL_YOUTUBEVIEW_HEIGHT)];
}
[webView loadHTMLString: contentHTML baseURL:nil];
Run Code Online (Sandbox Code Playgroud)
当我播放视频时,它只播放在potrait模式而不是横向模式.这是由于'iframes'的限制吗,有什么方法可以解决这个问题吗?
我的应用程序支持的界面方向是纵向和上下颠倒.但是,播放视频时,我希望它能够播放全屏风景.目前使用此代码,即使设备旋转,它也只播放肖像:
[player.moviePlayer setControlStyle:MPMovieControlStyleFullscreen];
player.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[self presentMoviePlayerViewControllerAnimated:player];
Run Code Online (Sandbox Code Playgroud)
如何强制它进入横向模式?
在我的 iPhone 应用程序中,我有一个我只想以纵向模式显示的视图。当导航到该视图时,它应该自动显示在纵向视图中。当导航离开时,方向应该变回原来的状态,或者,如果设备方向发生了变化,则适应它。我可以找到有关强制定向和防止自动旋转的信息。在离开该视图后,我找不到有关如何改回正确方向的任何信息。
所以我的想法是
currentOrientation)currentOrientation)currentOrientation值恢复正确的方向。编辑(现已删除代码):除了它不起作用之外,这是一种危险的方法,因为它广泛使用了不受支持的 API。
我相信这个问题现在可以归结为以下几点:
是否有记录的、受支持的方法来强制界面方向独立于设备方向?setValue(UIInterfaceOrientation.Portrait.rawValue, forKey: "orientation")已在 SO 和其他地方多次推荐,但它确实似乎是不受支持的 hack。
是否有记录的、受支持的方式将界面方向更新为设备方向?这将需要从另一个视图中的强制界面方向“恢复”,而不必通过来回转动设备来触发自动旋转。
支持的是supportedInterfaceOrientations()和shouldAutorotate()。但是这些只会在设备转到该位置后锁定 interfaceOrientation。它们不能防止错误的初始方向。
与此类似的问题有很多,可见此问题的设置并不少见,但目前使用支持的方法还没有令人满意且完整的解决方案。
我有一个导航控制器,持有一个只支持纵向的视图控制器:
这提供了一个仅支持横向的全屏视图控制器:
不幸的是,在转换期间,呈现视图控制器上的状态栏被移除,这使得内容在转换开始之前急剧上升.我已经实现了自定义淡入淡出过渡以使效果明显:
请注意,状态栏不存在.这是在自定义转换开始之前完成的,没有动画,所以即使我在转换开始之前拍摄快照并将其添加到容器视图中,您仍然会暂时看到缩小的导航栏.
有一种非可怕的方法来解决这个问题吗?我不想在转换之外添加快照(比如这个答案).
我已尝试将演示文稿样式设置为自定义而不是全屏,但这不会使设备处于纵向方向.使用自定义呈现样式使设备保持横向方向的解决方案也是可以接受的.
有一个示例项目演示问题在这里
在我的应用程序中按下某个按钮时,视图应该从纵向更改为横向.当用户返回时,视图控制器应该更改回肖像.但有时方向不会改变或使用错误的视图框架.
这是我的代码
-(void)btnSignClicked:(CustomSignButton *)btn {
isSignButtonClicked = true;
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_0) {
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}
else
{
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
}
selectedWaiverId = btn.customTag;
SignatureView *obj = [[SignatureView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) delegate:self]; // Most of time got size (568,320) but some time i got (320,568), Don't know why
[self.view addSubview:obj];
}
#pragma mark - SIGNATUREVIEW DELEGATE
-(void)removeSignatureView:(SignatureView *)signatureView {
isSignButtonClicked = false;
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_0)
{
NSNumber *value …Run Code Online (Sandbox Code Playgroud) 我试图从支持横向(在横向模式下)的视图控制器转到明确不支持(也不应该)支持横向的视图控制器.我这样做如下:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要新的viewController,我正在推动堆栈,最初是在纵向,而不是横向开始.奇怪的是,即使实施了这种方法,它也会在Landscape中开始.
我唯一的猜测是Apple不希望用户从横向转换为纵向(尽管允许我们从横向转换回以前的纵向控制器).
任何见解和/或帮助将不胜感激.
iphone orientation uiviewcontroller uiinterfaceorientation ios
我的应用程序有一个视图控制器,无法更改方向.把它想象成一个需要保持固定的运动场.
我现在想要提出一个UIActionSheet,但考虑到用户拿着设备的方式,我想将表单与方向匹配.
似乎UIActionSheet与MFComposerViewController不同,它不是从StatusBar获取它的方向,我根据方向旋转它,但从底层视图控制器获取它的方向.换句话说,UIActionSheet以纵向方式显示,无论设备如何被保持.
我试过了:
CGAffineTransform t = CGAffineTransformMakeRotation(lastUIAngle);
[actionSheet setTransform:t];
if (UIInterfaceOrientationIsLandscape(lastOrientation))
actionSheet.frame = CGRectMake(0, 0, 480, 320);
else
actionSheet.frame = CGRectMake(0, 0, 320, 480);
actionSheet.center = self.view.center;
Run Code Online (Sandbox Code Playgroud)
我设法得到正确的方向,但最终的动作表从纵向侧出现,并且大小就像是纵向还是一样.动作表的框架是根据按钮数等计算的.
有没有人设法迫使UIActionSheet正确显示在指定的方向?
(我也尝试创建一个新的视图,它被转换并具有正确的大小,但是UIActionSheet忽略了它.剩下的是创建一个自动旋转的新UIViewController,并让UIActionSheet成为它的一个孩子.但是,这意味着新的视图控制器完全掩盖了我的比赛场地.)
我的UIWebView存在问题.当视图加载时,它可以任意方向加载,完美填充整个页面等.
然而,如果我以纵向加载它然后旋转设备webview不会一直填充到右侧,我不能为我的生活找出原因.
这是我的观点做了加载方法
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait){
self.measurementsWebView.frame = CGRectMake(0, 0, 320, 367);
}else if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight){
self.measurementsWebView.frame = CGRectMake(0, 0, 480, 218);
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"measurements" ofType:@"png"];
[measurementsWebView loadHTMLString:[NSString stringWithFormat:@"<html><body><img src=\"file://%@\"></body></html>",path] baseURL:nil];
measurementsWebView.scalesPageToFit = YES;
}
Run Code Online (Sandbox Code Playgroud)
如果我查看界面构建器,我试图找到允许我设置扩展宽度的面板或者你所谓的它,但我只能看到这一点.

任何帮助将不胜感激
在iOS 6.0中,由于默认情况下AppDelegate扩展了UIRepsonder而不是UIApplication,因此没有全局的sharedApplication对象.我错过了什么吗?我正在尝试使用以下设置状态栏方向,它似乎不再起作用.我在iOS 6.0模拟器上测试过它.我知道您可以从plist设置中设置状态栏色调颜色,但有人可以告诉我如何在iOS 6.0中以编程方式设置状态栏方向吗?
[[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationPortrait animated:NO]
Run Code Online (Sandbox Code Playgroud) 我希望在全屏模式下以横向模式播放视频.我的应用程序锁定在纵向模式.如何实现这一点.请帮我.提前致谢
ios ×9
iphone ×2
landscape ×2
objective-c ×2
uistatusbar ×2
embed ×1
ios6 ×1
ios8 ×1
ipad ×1
orientation ×1
swift ×1
uiwebview ×1
youtube ×1