0

我正在尝试考虑一种创建数据的方法,该方法允许基于数据本身对内容进行动态布局。

举个例子……想象一个照片应用程序,您可以在其中将文本叠加到照片上。但不是将文本放在任何地方,而是为您提供了不同布局的多个选项。

一个人可能会在顶部居中放置文本。另一个可能使文本在底部左对齐。第三个可能在顶部和底部居中文本。ETC...

您将如何存储这些不同的选项?

目前我所能想到的就是做一些事情,比如存储不同“组件”的框架尺寸。即x,y,宽度,高度。或者可能是 AutoLayoutConstraint 样式尺寸。即左,右,上,下或其他东西。

然后在加载组件时,您可以查看针对它们存储的尺寸并根据需要应用布局。

还有比这更好的方法吗?

编辑

只是想到了另一种方式。我可以创建几个“区域”,如“顶部中心”、“左上角”、“中右”、“左下角”等......并使用这些区域属性“锚定组件”。

4

1 回答 1

1

您可以为文本位置定义一个新类型

typedef enum {
    TopCenter = 1,
    TopLeft,
    TopRight,
    MiddleCenter,
    MiddleLeft,
    MiddleRight,
    BottomCenter,
    BottomLeft,
    BottomRight,
} TextPosition;

您可以使用 a 属性来设置标签的框架

@property (nonatomic) TextPosition textPosition;

在二传手你可以做这样的事情

-(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;
            ...
    }
}
于 2013-05-13T16:25:46.413 回答