【问题标题】:How to maintain aspect ratio when resizing PaintCode generated view?调整 PaintCode 生成视图的大小时如何保持纵横比?
【发布时间】:2015-07-12 14:22:55
【问题描述】:

我正在使用 PaintCode 为我的 xamarin.ios 应用程序生成样式包。我有一个简单的徽标,我从 illustrator 粘贴到 PaintCode。一切看起来都很好,我有一个框架,并且生成的 draw 方法需要一个矩形。

有一次我在故事板中调整了它的大小,但它没有保持纵横比,因此很明显,根据 UIView 的大小,徽标看起来是错误的。

如何将变量/表达式添加到paintcode,以便在调整 UIView 大小时生成的代码自动保持纵横比?

谢谢。

【问题讨论】:

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

标签: ios xamarin paintcode


【解决方案1】:

变量可以做到这一点。尝试像这样创建两个变量:

  1. 数值型“宽度”,例如100
  2. 表达式“高度”,其值为width / 2。这将保持 2:1 的比例,根据需要进行更改。

然后将这两个附加到您的 Frame 对象的 Width 和 Height 属性。之后,生成的方法将只接受一个数字参数——Width

- (void)drawMyCanvasWithWidth: (CGFloat)width;

应该如下图所示:

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


还可以维护方法的CGRect 参数并使用变量找到合适的矩形。如果你问,我会补充。

【讨论】:

  • 是的,这就是我想出的。我为纵横比的表达式设置变量,然后使用这些变量生成调整后的高度并将其设置为我的框架的高度。但是,我需要对其进行改进,以便无论高度还是宽度是固定值,它都可以正常工作。您的代码固定宽度,但如果您制作 UIView 并更改高度,您可以剪辑图像。我想要它,这样如果高度会剪切图像,那么高度就会用作固定值,我们会生成一个宽度。我认为这可以通过在 paintcode 中使用 makeRect() 的表达式来实现。
  • 好吧,这行得通,我有一个设置为画布大小的 Rect 变量。然后我有一个使用常量的纵横比变量。然后我创建了一个表达式:logoMarkFrame.height < (logoMarkFrame.width/logoMarkAspectRatio) ? makeRect(0,0,logoMarkFrame.height*logoMarkAspectRatio,logoMarkFrame.height) : makeRect(0,0,logoMarkFrame.width,logoMarkFrame.width/logoMarkAspectRatio) 然后将它连接到我画布中的框架,它工作正常。我认为下一步是在高度小于宽度/ar 时使其居中。
猜你喜欢
  • 2019-08-15
  • 2011-04-28
  • 2013-06-26
  • 2012-04-15
  • 1970-01-01
  • 2019-08-10
相关资源
最近更新 更多