【问题标题】:VS for Mac - Using Autolayout for landscape and portrait viewsVS for Mac - 为横向和纵向视图使用自动布局
【发布时间】:2018-03-21 17:21:01
【问题描述】:

我需要帮助,花了一天时间搜索各种 youtube 视频和谷歌等,我已经碰壁了!

我正在使用 Visual Studio for Mac,基本上,我的登录屏幕在纵向模式下看起来不错,但在横向模式下却不是这样,所以我想通过重新设计的屏幕显示不同的视图,尤其是横向模式。

Microsoft 论坛建议我使用 OnSizeAllocated 事件来确定方向,这听起来不错,但我就是不知道你是如何做到的。

我在 View Controller 上没有任何事件。我有一个视图并且没有任何事件。如果我尝试将代码手动添加到 ViewControllers 类中,它不喜欢它。如果我尝试将其添加到 Main.cs 它不喜欢它或 AppDelegate.cs 它不喜欢它。

设计屏幕以匹配方向必须像呼吸空气,但对于我的生活,我就是无法解决,我在这里窒息!

我错过了什么?

【问题讨论】:

  • 你能发布更多关于你的登录屏幕的信息吗?你是如何构建它的,等等。如果可能的话,我会尝试用 AutoLayout 来做,但直到你提供一些关于你的实现的更多信息,如果你使用 xib/storyboard 或代码作为你的视图,你可以发布吗?
  • 您可以收听UIDeviceOrientationDidChangeNotification,然后相应地调整您的视图大小/重新定位吗?
  • @Iain Smith - 我还没有真正听说过 xib - 适用于 MAC 的 VS 都是基于 Xamarin 构建的故事板内容,但没有 Xaml 文件,因为我一整天都看到了他们的帖子已经使用 xaml 来堆叠控件。 (我想最后一句话只是表明我有多困惑)。无论如何,我有一个背景图像,然后在通常的用户名和密码控件下方以及登录按钮下方。
  • @Mark - 晚饭后我会再次拿出我的 Mac 并寻找那个巨大的通知事件。请问在哪里添加呢?在视图控制器还是其他地方?
  • 因此,如果您使用的是 Xamarin.iOS,将会有 xibs/storyboards 或只是查看代码(storyboards 只是带有一些额外导航功能的 xibs 的集合)。如果您使用的是 Xamarin.Forms,那么核心项目中将有用于布局的 Xaml 文件。因此,对于您的登录屏幕,应该只有代码是您以编程方式完成的,或者是情节提要文件或 xaml 文件,具体取决于您的实现方式。如果您将其添加到您的问题中,我应该能够提供更多帮助。

标签: c# xamarin xamarin.ios autolayout visual-studio-mac


【解决方案1】:

所以从 cmets 来看,我看到您正在使用 Visual Studio for Mac (VS4M) 作为您的 IDE,并且您正在使用单视图模板应用程序,但正试图让视图适应横向和纵向。

如果您在 VS4M 打开故事板,您应该会看到如下内容:

我在下一张图片中添加了一些控件(图片、用户名、密码和登录按钮),只是为了展示如何使用 VS4M 中的 iOS 设计器创建布局

这里的关键是切换到横向并按下Edit Traits > Edits apply to Compact Height only

您可以阅读更多关于 Size Class (Compact/Regular) here 的信息,但这是一个很好的图片,可以让您了解它:

下一步是对用户名、密码和登录按钮进行自动布局。

然后您将看到这样的视图:

我已经把这个上传到我的 GitHub 上,如果你想要链接,你可以看看here

Autolayout 是在 Xamarin.iOS 开发中更难理解的领域之一,因此我不会灰心。此外,这个link 非常适合了解有关使用 VS4M 进行自动布局的更多信息

如果您不是在 Autolayout 中而是在代码中,那么如果您可以发布该代码,我可以看看并提供帮助。

更新 - 自适应布局

因此,要实际更改/删除横向/纵向的某些约束,您必须使用已安装的属性。在这里,我将图像的中心约束更改为仅在 Any 宽度和 Regular 高度(又名纵向)时安装,然后在“任何”宽度和“紧凑”高度时安装其左侧(前导)约束(又名风景)

然后为了使它更好,我将登录名和密码文本框移到了它的右侧。首先,我必须使当前的用户名文本框垂直对齐约束仅安装在宽度 Any 和高度 Regular(portrait) 上,然后在宽度 Any 和高度 Compact 的超级视图顶部创建一个新的顶部约束(风景)。

最后一点是仅在宽度Any和高度Regular(纵向)上安装用户名和密码文本框的前导(左)水平间距约束,并创建两个新的前导(左)水平间距约束设置为安装在宽度Any 和高度Compact(横向)上的图像的尾部(右),记住将这些约束的常数设为 0(并按键盘上的 Enter 键设置值),如下所示:

然后应用程序将如下所示:

我已经用这个实现更新了我的GitHub 解决方案。抱歉所有图片,但我认为最好用图片来解释 Autolayout。

【讨论】:

  • 今天早上醒来,幸福得几乎要哭了。我非常感谢您投入的时间和精力,并且从那以后一直在努力解决问题。
  • 不用担心,很高兴为您提供帮助。如果这解决了您的问题,请记住将答案标记为已接受,以便其他人可以看到。
  • 我想我只是认为你可以有一个纵向视图,例如控件垂直对齐,然后是另一个横向视图,在我们的示例中,徽标将在最左侧,用户名和中间的密码控件和右侧的登录按钮。
    点击纵向或横向图像会很酷,而不是编辑特征按钮,您将拥有编辑设计等
  • 是的,这也是可能的,但您必须使用安装/卸载属性。我将更新我的答案以展示您将如何做到这一点。
  • 嘿,我已经用更自适应的横向布局更新了答案,如果有帮助请告诉我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多