如何右对齐第一个组件
How to right align for the first component
我正在尝试实现以下布局:
Name: James
Gender: Male
Followers: Brian, Jason and Mike.
我可以想象顶层是使用 CKStackLayout,但是对于每个条目,例如"Name: James",如何使名称在框内右对齐?
我使用了类似下面的东西,将文本包裹在一个固定宽度的组件中,并将标签组件设置为使用 NSTextAlignmentRight
对齐,但它不起作用,左右都是 'left-align':
static CKComponent *singleLine(NSString *left, NSString *right)
{
CKStackLayoutComponent *stackComponent =
[CKStackLayoutComponent
newWithView:{}
size:{}
style:{
.direction = CKStackLayoutDirectionHorizontal,
.alignItems = CKStackLayoutAlignItemsStretch,}
children:{
{.component = [CKStaticLayoutComponent
newWithView:{}
size:{.width = CKRelativeDimension(10)}]},
{.component =
[CKStaticLayoutComponent
newWithView:{}
size:{.width = CKRelativeDimension(88)}
children:{
{
.component =
[CKLabelComponent
newWithLabelAttributes:{
.string = left,
.alignment = NSTextAlignmentRight,
.font = [UIFont boldSystemFontOfSize:14.0],
.maximumNumberOfLines = 1
}
viewAttributes:{}],
}
}],
},
{
.component =
[CKLabelComponent
newWithLabelAttributes:{
.string = right,
.alignment = NSTextAlignmentLeft,
.font = [UIFont systemFontOfSize:14.0],
.maximumNumberOfLines = 1
}
viewAttributes:{}],
.spacingBefore = 10.0
}
}];
return stackComponent;
}
谢谢!
我认为你的解决方案很好。另一种解决方案是通过覆盖 computeLayoutThatFits:
来编写您自己的自定义布局。通常最好避免这种情况,但对于像表单这样的复杂布局,它可以成为救星。
也许你应该给外部堆栈(它包装多行单行,并具有垂直布局方向):.alignItems = CKStackLayoutAlignItemsStretch
我正在尝试实现以下布局:
Name: James
Gender: Male
Followers: Brian, Jason and Mike.
我可以想象顶层是使用 CKStackLayout,但是对于每个条目,例如"Name: James",如何使名称在框内右对齐?
我使用了类似下面的东西,将文本包裹在一个固定宽度的组件中,并将标签组件设置为使用 NSTextAlignmentRight
对齐,但它不起作用,左右都是 'left-align':
static CKComponent *singleLine(NSString *left, NSString *right)
{
CKStackLayoutComponent *stackComponent =
[CKStackLayoutComponent
newWithView:{}
size:{}
style:{
.direction = CKStackLayoutDirectionHorizontal,
.alignItems = CKStackLayoutAlignItemsStretch,}
children:{
{.component = [CKStaticLayoutComponent
newWithView:{}
size:{.width = CKRelativeDimension(10)}]},
{.component =
[CKStaticLayoutComponent
newWithView:{}
size:{.width = CKRelativeDimension(88)}
children:{
{
.component =
[CKLabelComponent
newWithLabelAttributes:{
.string = left,
.alignment = NSTextAlignmentRight,
.font = [UIFont boldSystemFontOfSize:14.0],
.maximumNumberOfLines = 1
}
viewAttributes:{}],
}
}],
},
{
.component =
[CKLabelComponent
newWithLabelAttributes:{
.string = right,
.alignment = NSTextAlignmentLeft,
.font = [UIFont systemFontOfSize:14.0],
.maximumNumberOfLines = 1
}
viewAttributes:{}],
.spacingBefore = 10.0
}
}];
return stackComponent;
}
谢谢!
我认为你的解决方案很好。另一种解决方案是通过覆盖 computeLayoutThatFits:
来编写您自己的自定义布局。通常最好避免这种情况,但对于像表单这样的复杂布局,它可以成为救星。
也许你应该给外部堆栈(它包装多行单行,并具有垂直布局方向):.alignItems = CKStackLayoutAlignItemsStretch