标签: screen-rotation

在容器视图控制器中旋转UIPageViewController

我有一个包含其他ViewControllers的UIViewController.初始ViewController在viewDidLoad中设置:

FirstViewController *first = [FirstViewController alloc] init];
first.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
first.view.frame = m_content.frame;

[self addChildViewController:first];
[m_content.view addSubview:first.view];
[first didMoveToParentViewController:self];
m_activeViewController = first;
Run Code Online (Sandbox Code Playgroud)

此Container Controller已实现automaticForwardAppearanceAndRotationMethodsToChildViewControllers返回YES.它还实现了手动将旋转更改转发到非活动ViewControllers

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    for(UIViewController *vc in m_viewControllers)
    {
        if(vc != [m_activeViewController]
            [vc willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    }
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    for(UIViewController *vc in m_viewControllers)
    {
        if(vc != [m_activeViewController]
            [vc didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    }
}
Run Code Online (Sandbox Code Playgroud)

当点击菜单按钮时,我在ViewControllers之间进行转换.

- (void)onMenuItemTapped:(id)sender
{
    UIViewController *vc = [m_viewControllers objectAtIndex:sender.tag];

    vc.view.frame = m_content.frame;
    [self addChildViewController:vc]; …
Run Code Online (Sandbox Code Playgroud)

containers screen-rotation uipageviewcontroller

6
推荐指数
1
解决办法
3561
查看次数

嵌套的DialogFragment在轮换后被解雇

我有一个嵌套(!)片段,显示我的PhotoNoteDialogFragment:

private void newPhotoNote() {
  mPhotoDialog = PhotoNoteDialogFragment.newInstance(this);
  mPhotoDialog.show(getFragmentManager(), PhotoNoteDialogFragment.TAG);
}
Run Code Online (Sandbox Code Playgroud)

弹出对话框,但一旦旋转设备就会被解除.我做过一些研究并尝试过这些事情但没有成功:

  • 设置PhotoNoteDialogFragment#setRetainInstance(true).不起作用,因为无法保留嵌套的片段.

  • 在PhotoNoteDialogFragment中使用此代码段可防止从系统发出不需要的解除调用的错误:

    @Override
    public void onDestroyView() {
        if (getDialog() != null)
            getDialog().setDismissMessage(null);
        super.onDestroyView();
    }
  • 尝试调用show() - 我的嵌套片段#onActivityCreated中的方法,如果PhotoNoteDialogFragment的实例不是null:
  @Override
  public void onActivityCreated(final Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (mPhotoNoteDialogFragment != null) {
      mPhotoNoteDialogFragment.show(getFragmentManager(), PhotoNoteDialogFragment.TAG);
    }
  }

在屏幕旋转后,这些尝试都不会使DialogFragment再次出现.有没有其他人的想法,我可以尝试下一步..?我没有想法.

谢谢

android nested screen-rotation android-dialogfragment

6
推荐指数
1
解决办法
1158
查看次数

如何全局检测屏幕旋转何时发生变化?

在Android服务中,我希望在屏幕旋转发生变化时进行检测.通过轮换,我不仅仅意味着肖像与景观; 我的意思是对屏幕旋转的任何改变.此类更改的示例是对以下内容的更改

  • 肖像
  • 反转肖像
  • 景观
  • 逆向景观

请注意,此问题与设备方向的更改无关.它仅与屏幕方向/旋转有关.

我试过的

  • Configuration通过听取变化ACTION_CONFIGURATION_CHANGED.这仅涵盖纵向和横向之间的变化,因此180°变化不会触发此变化.

为什么我这样做

我正在开发一个自定义屏幕方向管理应用程序.

android screen-orientation screen-rotation orientation-changes

6
推荐指数
2
解决办法
1716
查看次数

Android:setRequestedOrientation后自动旋转不起作用

我有一个视频播放器,我有两个功能:

  1. 如果禁用了自动旋转,并且当用户单击全屏按钮时,我会强制orientation进入landscape视图,setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE)并在退出全屏时返回纵向视图.

  2. onConfigurationChanged当用户启用自动旋转功能时,我已覆盖以检测方向的变化,并根据方向更改活动视图.

现在这个设置的问题是,如果用户启动活动并进入全屏并且setRequestedOrientation被调用一次,稍后auto-rotate启用时,活动不会收到方向更改并且onConfigurationChanged不会被调用.

我在这里(/sf/answers/427644451/)读到他们不会同时工作.

我想知道是否有一种方法可以实现两者,因为我已经看过玩家喜欢MX Player在他们的应用程序中执行此操作.

android orientation screen-orientation autorotate screen-rotation

6
推荐指数
1
解决办法
2432
查看次数

打开OptionsMenu of Activity泄漏设备旋转窗口

试图了解我的Activity中窗口泄漏的原因.该活动扩展了AppCompatActivity.它具有单个视图,其中RecyclerView和ProgressBar在旋转时不可见.

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    if (savedInstanceState != null) {
        chosenSorting = savedInstanceState.getString("sorting");
    }

    mRecyclerView = (RecyclerView) findViewById(R.id.rv_pop_view);
    mLoadingIndicator = (ProgressBar) findViewById(R.id.pb_loading_indicator);
    RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 2);
    moviesRecyclerView.setLayoutManager(mLayoutManager);

    mRecyclerView.setHasFixedSize(true);

    if (chosenSorting.equals("")) {
        load("A");
    } else {
        load("B");
    }
}
Run Code Online (Sandbox Code Playgroud)

屏幕旋转一切正常,没有UI问题.但是当OptionsMenu打开时发生旋转时,会出现泄漏窗口:

E/WindowManager: android.view.WindowLeaked: Activity com.example.MainActivity has leaked window android.widget.PopupWindow$PopupDecorView{2aeb62a V.E...... ......ID 0,0-686,336} that was originally added here
                                                                                at android.view.ViewRootImpl.<init>(ViewRootImpl.java:418)
                                                                                at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331)
                                                                                at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
                                                                                at android.widget.PopupWindow.invokePopup(PopupWindow.java:1378)
                                                                                at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:1234)
                                                                                at android.support.v7.widget.AppCompatPopupWindow.showAsDropDown(AppCompatPopupWindow.java:105) …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks screen-rotation options-menu android-windowmanager

6
推荐指数
1
解决办法
238
查看次数

UICollectionView自动调整大小和动态行数

我想做这样的事情:

在此输入图像描述 基本上,我使用的是一个UICollectionView和细胞(3个不同.xib).

到目前为止,它的确有效.

我想做的是:

  1. 设置一个 autoheight
  2. 如果旋转,则向UIColectionView 2.1 添加1行如果平板电脑,则在纵向上将有2行并且横向3行.(基本上与第2点相同,只增加1行.

我有这样的事情:

extension ViewController {
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator){
    setSizeSize()
}

func setSizeSize(){
    if(DeviceType.IS_IPAD || UIDevice.current.orientation == .landscapeLeft || UIDevice.current.orientation == .landscapeRight){
        if let layout = myCollectionView.collectionViewLayout as? UICollectionViewFlowLayout {
            layout.estimatedItemSize = CGSize(width: 1, height: 1)
            layout.invalidateLayout()
        }
    }else{
        if let layout = myCollectionView.collectionViewLayout as? UICollectionViewFlowLayout {
            layout.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
            layout.invalidateLayout()
        }
    }
    myCollectionView.collectionViewLayout.invalidateLayout()
}
}
Run Code Online (Sandbox Code Playgroud)

不行.此外,它冻结设备.在模拟器上工作特殊.(我相信更多的设备)

我也尝试过这个,但它有时会起作用......

如果您需要更多信息,请告诉我.

提前谢谢大家的帮助.

rows autosize screen-rotation uicollectionview swift

6
推荐指数
1
解决办法
622
查看次数

javascript检测浏览器/设备是否支持屏幕旋转

有没有办法检测浏览器/设备是否支持屏幕旋转,而不必等待orientationchange事件?我不是试图检测旋转本身,只有浏览器或设备支持它。

javascript screen-rotation

5
推荐指数
1
解决办法
1230
查看次数

为什么类别中的didRotateFromInterfaceOrientation会导致UISplitView出现问题?

我有一个标签式应用程序,其中一个选项卡中有一个UISplitView.

我正在使用UITabBarController + iAds,并且有一个开发人员到目前为止无法解决的问题.

不幸的是,这就是我的UI在旋转iPad时的样子:

在此输入图像描述 在此输入图像描述

从AppDelegate中调用该类别,以下代码用于在旋转设备时刷新广告:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    NSLog(@"Did rotate");
    [self layoutBanner];
}
Run Code Online (Sandbox Code Playgroud)

据我了解,这是阻止MasterViewController正常工作但我不完全理解方法调用级联背后的原理,以了解如何解决此问题.

rotation uisplitviewcontroller screen-rotation ios objective-c-category

5
推荐指数
1
解决办法
2287
查看次数

iOS 如何复制 Youtube App 播放器轮换?

知道我在这个视频中展示的功能是如何完成的吗?看起来“展开”按钮上的触摸会强制设备的方向改变(事实上,当我滑动时,我正在拉出控制中心)。无论如何,似乎只有视频播放器在旋转。下面的滚动视图保持其纵向。

youtube screen-rotation ios video-player

5
推荐指数
1
解决办法
1062
查看次数

MPVolumeView路由列表支持所有方向并忽略底层视图控制器

这似乎是一个操作系统错误,但仍需要解决方法.

使用基于视图控制器的方向定位iOS 8或9,MPVolumeView即使其父视图控制器仅支持单个方向,路由列表也将始终旋转.

这可能导致系统进入错误的方向状态,其中视图控制器以纵向显示,但状态栏(和控制中心)是横向的.

创建了一个演示错误的测试项目:https://github.com/NextFaze/MPVolumeViewTest

orientation screen-rotation ios mpvolumeview

5
推荐指数
1
解决办法
274
查看次数