- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Xamarin.Forms 中遇到以下 iOS 13 问题:页面的一部分(aqua BoxView)在以下情况下被推离屏幕:
演示: https://github.com/GerhardSchreurs/SearchDemo
详细信息:
我的主页包含一个 StackLayout。 StackLayout 托管一个 ListView 和一个 BoxView)。该页面设置为显示大标题。 MainPage 还有一个 PageRenderer,它注入(inject) UISearchController/SearchBar。
当我在模拟器中查看结果时,启动后大约有一半的 BoxView 不可见。当我滚动时,我会看到 BoxView 的其余部分,直到滚动到顶部并释放(初始状态)。
此问题在 iOS 13 中出现(在 iOS 12 中没有问题)。
此问题在以下情况下消失:
但是,如果可能的话,我不想放弃这两个
MainPage.xaml:
<?xml version="1.0" encoding="utf-8"?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
Title="Hello"
NavigationPage.HasNavigationBar="True"
ios:Page.LargeTitleDisplay="Automatic"
mc:Ignorable="d"
x:Class="Search.MainPage"
x:Name="_rootPage">
<StackLayout x:Name="_outerLayout">
<ListView x:Name="_list" BackgroundColor="AntiqueWhite" HasUnevenRows="True" />
<BoxView HeightRequest="100" BackgroundColor="Aqua" />
</StackLayout>
</ContentPage>
MainPage.xaml.cs
public partial class MainPage : ContentPage
{
public ObservableCollection<string> _data;
public MainPage()
{
InitializeComponent();
_data = new ObservableCollection<string>() { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
_list.ItemsSource = _data;
}
}
MainPageRenderer.cs
[assembly: ExportRenderer(typeof(MainPage), typeof(MainPageRenderer))]
namespace Search.iOS.CustomRenderers
{
public class MainPageRenderer : Xamarin.Forms.Platform.iOS.PageRenderer, IUISearchControllerDelegate
{
private UISearchController _searchController;
public override void WillMoveToParentViewController(UIViewController parent)
{
base.WillMoveToParentViewController(parent);
SetSearchController(parent);
}
void SetSearchController(UIViewController parent)
{
_searchController = new UISearchController(searchResultsController: null);
_searchController.HidesNavigationBarDuringPresentation = false;
_searchController.DimsBackgroundDuringPresentation = false;
_searchController.SearchBar.SearchBarStyle = UISearchBarStyle.Minimal;
_searchController.AutomaticallyAdjustsScrollViewInsets = false;
_searchController.Delegate = this;
parent.NavigationItem.HidesSearchBarWhenScrolling = false;
parent.NavigationItem.SearchController = _searchController;
}
}
}
我尝试了很多方法来解决这个问题,包括修改 listView 的高度,但我找不到解决方案。我可能不知道 listView 或 SearchBar 上的 iOS 特定设置可能会解决此问题。
最佳答案
https://github.com/xamarin/Xamarin.Forms/issues/8758
在 UISearchController/UINavigationController 中使用 SearchBar 时存在布局问题。这应该在未来的版本中修复。
解决方法:
不要将 UISearchController 注入(inject)到 PageRenderer 中(我认为这应该是正确的方法),而是简单地回退到 PCL/共享项目中的 Xamarin.Forms.SearchBar,如下所示(示例):
var searchBar = new SearchBar
{
BackgroundColor = Color.White,
TextColor = Color.Black,
_grid.Children.Add(searchBar, 0, 0);
}
不过你会失去一些功能。 (与大标题等互动)
关于c# - Xamarin.iOS 底部 View 在滚动之前部分超出视口(viewport)(LargeTitle、SearchBar、ListView 和 BoxView 组合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59158176/
我遇到这种情况,刷新完成后我的 LargeTitles 变得“弹出”。我已经在这个链接 post 中相应地实现了但以编程方式,但收到了这个问题,如下所示: 我的代码如下: //Declarations
我正在创建一个使用 Cupertino 小部件的 Flutter 应用程序。现在我正在使用 CupertinoSliverNavigationBar,但我确实喜欢多行标题。目前我写了以下内容: @ov
我在使用 Table View Controller 时遇到 iOS 11 的大标题问题。 我已经在 viewDidLoad 中将 prefersLargeTitles 设置为 true: overr
我已经实现了 iOS 11 功能 prefersLargeTitles,它运行良好。纵向模式按预期工作: 我了解大标题在横向模式下始终保持折叠(小)状态,这对我来说很好。问题是当我尝试更改为横向然后再
我使用以下代码在我的应用中实现了大标题: if #available(iOS 11.0, *) { navigationController?.navigationBar.pr
我使用包装在 UINavigationController 中的 UITableView 实现了一个基本的 UIViewController。我将 prefersLargeTitles 设置为 tru
如标题所示,我使用 UIButton 作为导航栏中的 titleView。有没有办法让 UIButton 和导航栏一起变大?当我设置 self.navigationController?.naviga
我使用以下代码滚动到 UICollectionView 的顶部: scrollView.scrollRectToVisible(CGRect(origin: .zero, size: CGSize(w
示例项目可以在 https://github.com/SRowley90/LargeTitleIssueTestiOS 找到 我试图在 iOS 应用程序的大标题下方放置一个分段控件。我有一个 UITo
我想防止新的 largeTitles navigationBar 在用户滚动内容时折叠成标准的小 navigationBar。即始终保持导航栏的大尺寸和大字体的标题。 我想这样做的原因是我在标题上方的
我有一个简单的“更多”屏幕,我想在其中显示一个 largeTitle。我在静态 TableView 中有几个条目导致其他 View Controller 。我想在“更多”屏幕中显示大标题,但不在推送到
我使用这段代码创建了一个带有大标题 NavigationBar 的 NavigationController。 class NavigationController: UINavigationCont
我有一个带有 largeTitle 和 searchcontroller 的 navigationBar,我的 tableView 有一个 refreshcontrol。 当我拉动以刷新 refres
我注意到 iOS 13 中的一堆系统应用程序在显示展开的导航栏时显示了与大标题一致的 UIBarButtonItems。 (消息、健康、App Store 以及 WWDC 视频中的至少一个演示应用)
我在 Xamarin.Forms 中遇到以下 iOS 13 问题:页面的一部分(aqua BoxView)在以下情况下被推离屏幕: 打开页面 滚动到顶部(初始状态)。 演示: https://gith
我是一名优秀的程序员,十分优秀!