我正在尝试一种创建数据的方法,允许基于数据本身动态布局内容。
举个例子......想象一下你可以在照片上叠加文字的照片应用。但是,不是将文本放在任何地方,而是给出了几种不同布局的选项。
有人可能将文字置于顶部。 另一个可能会在底部对齐文本。 第三个可能在顶部和底部有居中文本。 等...
您如何存储这些不同的选项?
目前我所能想到的就是存储不同“组件”的框架尺寸。即x,y,宽度,高度。或者可能是AutoLayoutConstraint样式维度。即左,右,上,下或其他东西。
然后,在加载组件时,您可以查看针对它们存储的尺寸,并根据需要应用布局。
有没有比这更好的方法?
修改
想到另一种方式。我可以创建几个“区域”,如“顶部中心”,“左上角”,“中间右侧”,“左下角”等......并“使用这些区域属性锚定组件。
答案 0 :(得分:1)
您可以为文本位置定义新类型
typedef enum {
TopCenter = 1,
TopLeft,
TopRight,
MiddleCenter,
MiddleLeft,
MiddleRight,
BottomCenter,
BottomLeft,
BottomRight,
} TextPosition;
您可以使用a属性设置标签的框架
@property (nonatomic) TextPosition textPosition;
在setter中你可以做这样的事情
-(void)setTextPosition:(TextPosition)textPosition
{
if (_textPosition != textPosition) {
_textPosition = textPosition;
switch (textPosition) {
case TopCenter :
{
self.label.frame = topFrame;
self.label.textAlignment = UITextAlignmentCenter;
}
break;
case TopLeft :
{
self.label.frame = topFrame;
self.label.textAlignment = UITextAlignmentLeft;
}
break;
...
}
}