当调整 PaintCode 生成的视图大小时如何保持宽高比?

7
我正在使用PaintCode为我的Xamarin.iOS应用生成样式库。我将一个简单的徽标从Illustrator中复制到PaintCode中,一切看起来都很好,我有一个框架和生成的绘制方法需要一个矩形。
曾经,在我的Storyboard中对其进行了调整大小,但它无法保持纵横比,因此徽标根据UIView的大小而看起来不正确。
我该如何在PaintCode中添加变量/表达式,以便生成的代码在UIView调整大小时自动保持纵横比?
谢谢。

自动布局的纵横比约束? - Alaeddine
不,这是针对Paintcode(paintcodeapp.com)的特定内容。Paintcode为矢量资产生成绘图方法,但默认情况下它不保持纵横比,我认为这需要手动实现,但我不确定如何实现。 - jmichas
这是一个UIView,所以你可以设置约束,我猜。 - Alaeddine
1个回答

7
这可以通过变量实现。尝试创建两个变量,如下所示:
  1. 数值型“宽度”变量,例如值为100
  2. 表达式“高度”变量,值为宽度 / 2。这将保持2:1的比例,根据需要进行更改。
然后将这两个变量附加到您的框架对象上的“宽度”和“高度”属性。之后,生成的方法将仅接受一个数字参数-“宽度”。
- (void)drawMyCanvasWithWidth: (CGFloat)width;

应该看起来像这张图片:

预览

然后只需传递所需的宽度,高度将自动计算。


如果需要,也可以保持方法的CGRect参数,并使用变量找到合适的矩形。如果您有需要,我可以添加这个。


1
是的,这就是我想到的方法。我为纵横比表达式设置了变量,然后使用它们生成调整后的高度,并将其设置为我的框架的高度。但是,我需要完善它,使其无论高度还是宽度都可以作为固定值。您的代码固定了宽度,但如果您创建一个UIView并更改高度,则可能会剪切图像。我希望如果高度会剪切图像,则使用高度作为固定值,我们生成一个宽度。我认为这可以通过在paintcode中使用makeRect()表达式来实现。 - jmichas
2
好的,这个方案可行。我有一个Rect变量,它被设置为画布的大小。然后我有一个使用常量的纵横比变量。接着我创建了一个表达式,其中包含以下内容:logoMarkFrame.height < (logoMarkFrame.width/logoMarkAspectRatio) ? makeRect(0,0,logoMarkFrame.height*logoMarkAspectRatio,logoMarkFrame.height) : makeRect(0,0,logoMarkFrame.width,logoMarkFrame.width/logoMarkAspectRatio) 然后将其连接到画布中的框架上,一切都正常工作。我认为下一步应该是在高度小于宽度/纵横比时保持居中。 - jmichas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接