我有一个游戏,其中设备的方向影响游戏的状态.用户必须在横向,纵向和反向横向方向之间快速切换.到目前为止,我一直在通过以下方式注册游戏以获取方向通知:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
Run Code Online (Sandbox Code Playgroud)
但它太慢了 - 旋转电话和通知实际被解雇之间似乎有大约第二个延迟.我需要一种方法来立即检测设备方向的变化.我已经尝试过使用陀螺仪进行试验,但我还不熟悉它,以了解它是否是我正在寻找的解决方案.
是否可以简单地检测Android设备的当前方向,而无需编程监听器和处理位置矩阵?在我的应用程序中,我只想知道目前的方向 - 垂直或水平 - 此刻.但是,我不想听取轴测量或其他事件的事件.
我在这里使用Twitter Bootstrap构建了一个响应式站点:http://zarin.me/cce/
响应式设计在iPad和iPhone上运行良好,但是当我将设备从纵向翻转到横向时,网站会放大而不是适应屏幕(捏屏幕工作).
我错过了什么?这是一个视口问题吗?这是我在我的唯一视口代码:
<meta content="width=device-width, initial-scale=1.0" name="viewport">
Run Code Online (Sandbox Code Playgroud)
提前致谢!
viewport orientation screen-orientation device-orientation responsive-design
我需要找到的原因是,在iPad上,UIPickerView在横向方向上具有与在纵向方向相同的高度.在iPhone上它是不同的.iPad编程指南为UIDevice引入了一个"成语"值:
UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// iPad
}
else
{
// iPhone
}
Run Code Online (Sandbox Code Playgroud)
你在iPad(3.2)但不是iPhone(3.1.3)时工作正常 - 所以看起来还需要有一个ifdef来有条件地编译那个支票,比如:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200
UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// etc.
}
#endif
Run Code Online (Sandbox Code Playgroud)
对我而言,开始看起来非常笨拙.什么是更好的方式?
我有这是应该覆盖整个设备(一个UIWindow)支持的图像放大/缩小效果我使用核心动画其中用户点击一个UITableViewCell按钮做一个UIView和我缩放相关联的图像.
缩放是完美无瑕的,我无法弄清楚的是,即使设备处于横向状态,子视图仍然处于纵向模式.下图说明:

我有一个导航控制器,但这个视图已直接添加到UIWindow.
这是我的XAML代码:
<Window x:Class="CarFinder.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Search for cars in TuMomo" Height="480" Width="600">
<DockPanel Margin="8">
<Border CornerRadius="6"
BorderBrush="Gray"
Background="LightGray"
BorderThickness="2"
Padding="8">
<StackPanel Orientation="Horizontal"
DockPanel.Dock="Top"
Height="25">
<TextBlock FontSize="14" Padding="0 0 8 0">
Search:
</TextBlock>
<TextBox x:Name="txtSearchTerm" Width="400" />
<Image Source="/CarFinder;component/Images/Chrysanthemum.jpg" />
</StackPanel>
</Border>
<StackPanel Orientation="Horizontal"
DockPanel.Dock="Top"
Height="25">
</StackPanel>
</DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
边框设置在整个窗口周围.而且,当我创建另一个StackPanel时,它会添加到我之前的StackPanel的右侧,而不是添加到它下面.这是什么原因?
我的应用程序仅通过supportedInterfaceOrientation属性支持横向方向.
使用iOS 6之前的iOS,我的应用程序可以成功加载UIImagePickerControllervia 的实例,presentViewController:animated:completion:即使它UIImagePickerController本身只支持纵向方向.
图像选择器简单地向用户侧面呈现.用户旋转手机,拾取他们的图像,然后旋转回横向.
在iOS 6.0下,presentViewController:animated:completion:使用UIImagePickerController实例调用会使应用程序崩溃.我可以通过向我的supportedInterfaceOrientation属性添加纵向选项来防止崩溃.
但是,纵向操作对我的应用来说真的没有用.我原本以为我可以使用shouldAutorotateToInterfaceOrientation该应用程序"支持肖像",但只允许在这一个视图中旋转到肖像.但是现在该方法已被弃用,我不能在shouldAutorotate中使用相同的技术.
有没有人有任何想法如何在iOS 6.0下解决这个问题?
我希望状态栏在iOS 8中以两个方向显示; 它在iOS 7中正确显示.
navigationController.isNavigationBarHidden 返回NO.
为什么iOS 8会这样做?
告诉Android onCreate()在方向改变时不打电话我遇到了麻烦.我已经添加android:configChanges="orientation"到我的清单中但仍然onCreate()调用了方向更改.这是我的代码.
AndroidManifest.xml中
<activity android:name="SearchMenuActivity" android:theme="@android:style/Theme.NoTitleBar" android:configChanges="orientation"></activity>
Run Code Online (Sandbox Code Playgroud)
SearchMenuActivity.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the current layout to the search_menu
setContentView(R.layout.search_menu_activity);
Log.d(TAG, "onCreate() Called");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
//don't reload the current page when the orientation is changed
Log.d(TAG, "onConfigurationChanged() Called");
super.onConfigurationChanged(newConfig);
}
Run Code Online (Sandbox Code Playgroud)
和我的LogCat输出
06-23 12:33:20.327: DEBUG/APP(2905): onCreate() Called
//Orientation Changes
06-23 12:33:23.842: DEBUG/APP(2905): onCreate() Called
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?谢谢.
我的应用程序需要处于纵向模式,因此我在清单中将其设置为:
android:screenOrientation="portrait"
Run Code Online (Sandbox Code Playgroud)
但是我最近刚刚添加了另一个片段(FragA),它在外观上看起来和功能都要好10倍.有什么东西可以放在我的FragA中,只是在横向制作该片段,同时保留应用程序的其余部分,或者通过这样做,我必须在我的其他片段中添加一些内容以保留它们作为肖像吗?