我正在尝试在iOS13上使用新的mid
。我想显示两种不同的单元格类型,但是我希望布局系统自动调整单元格的大小。我想利用UICollectionViewCompositionalLayout
来考虑自动调整大小。
我正在尝试使用Xamarin进行此操作,但是Swift编码人员应该能够阅读以下代码。我对自动布局和动态单元格的大小不是很坚强,但是到目前为止,我已经能够找到在线资源。几乎每个NSCollectionLayoutDimension.estimated
示例都似乎使用单个单元格模板。
UICollectionViewCompositionalLayout
如您所见,问题在于两种细胞类型使用相同的估计高度200。我不确定在这里做错了什么。我希望两种单元格类型都自动调整大小以适合其内容,而不要有多余的空间来达到200。我尝试使用较小的估计大小(如10),但这没有任何改变。应该如何将代码更改为具有自动大小调整功能?
答案 0 :(得分:0)
这取决于您在CollectionViewCell
中设置的约束,请不要给标签加上固定的大小,否则它将不会自动调整大小,请在MyViewUICollectionViewCell2中将标签的约束更改为:
public class MyViewUICollectionViewCell2 : UICollectionViewCell
{
public const string ReuseIdentifier = "MyViewUICollectionViewCell2";
public UILabel Label { get; }
[Export("initWithFrame:")]
public MyViewUICollectionViewCell2(CGRect frame) : base(frame)
{
var container = new UIView
{
BackgroundColor = UIColor.White,
TranslatesAutoresizingMaskIntoConstraints = false
};
container.Layer.CornerRadius = 5;
ContentView.AddSubview(container);
container.TopAnchor.ConstraintEqualTo(ContentView.TopAnchor).Active = true;
container.LeftAnchor.ConstraintEqualTo(ContentView.LeftAnchor).Active = true;
container.BottomAnchor.ConstraintEqualTo(ContentView.BottomAnchor).Active = true;
container.RightAnchor.ConstraintEqualTo(ContentView.RightAnchor).Active = true;
Label = new UILabel
{
Lines = 0;
TranslatesAutoresizingMaskIntoConstraints = false
};
container.AddSubview(Label);
Label.TopAnchor.ConstraintEqualTo(container.TopAnchor).Active = true;
Label.LeftAnchor.ConstraintEqualTo(container.LeftAnchor).Active = true;
Label.BottomAnchor.ConstraintEqualTo(container.BottomAnchor).Active = true;
Label.RightAnchor.ConstraintEqualTo(container.RightAnchor).Active = true;
//Label.CenterXAnchor.ConstraintEqualTo(container.CenterXAnchor).Active = true;
//CenterYAnchor.ConstraintEqualTo(container.CenterYAnchor).Active = true;
//Label.WidthAnchor.ConstraintEqualTo(20).Active = true;
//Label.HeightAnchor.ConstraintEqualTo(20).Active = true;
}
}
对于colorView
中的MyViewUICollectionViewCell1
,如果您知道colorView
的大小,则应将container
的大小指定为与{{1} },它不会像带有不同文本的标签一样增长。