【问题标题】:Problems creating a round UIImageView with Storyboard [Xamarin]使用 Storyboard [Xamarin] 创建圆形 UIImageView 时出现问题
【发布时间】:2016-04-21 12:43:03
【问题描述】:

我面临一个奇怪的问题,并且确信我监督了一些明显的事情: 我想得到一个像这样的圆形图像:

我执行以下操作来圆我的 UIImageView 的角:

        testImage.Layer.CornerRadius = testImage.Frame.Size.Height * 0.5f;
        testImage.ClipsToBounds = true;

在我的故事板中,ImageView 的左右约束为 60,顶部为 92,纵横比为 1:1。

但是,当我运行该应用程序时,我在 iPhone 6plus 上收到以下信息:

我用 CornerRadius 玩了一下,可以在 iPhone 5 上生成 100、iPhone 6 上 125 和 iPhone 6plus 上 150 的所需圆。

当我从这样的代码生成所有内容时:

        var testImage = new UIImageView(new CoreGraphics.CGRect(0, 0, 150, 150));
        testImage.Image = UIImage.FromFile ("kitten.jpg");
        testImage.Layer.CornerRadius = testImage.Frame.Size.Height * 0.5f;
        testImage.ClipsToBounds = true;
        View.Add (testImage);

我得到了预期的结果:

我的故事板做错了吗?

提前致谢!

【问题讨论】:

  • 在您的第一个实例中,您假设高度和宽度相等,因为纵横比设置为 1:1;在您的第二个实例中,您实际上是在创建一个 UIImageView ,它将高度和宽度设置为相等的值。如果将纵横比约束的优先级设置为高于任何其他约束的优先级的数字,则应该得到一个圆圈。

标签: c# ios xamarin uikit uistoryboard


【解决方案1】:

我已经在 Xcode 中仔细检查了这个,所以我会把它作为答案:

在您的第一个实例中,您假设高度和宽度相等,因为纵横比设置为 1:1;在您的第二个实例中,您实际上是在创建一个 UIImageView ,它将高度和宽度设置为相等的值。如果您将纵横比约束的优先级设置为高于任何其他约束的优先级的数字,您应该得到一个圆圈。

【讨论】:

  • 嗨格伦,刚刚试了一下:当我将所有其他优先级设置为例如750 UIImageView 完全放错了位置:/ 你有没有设法让它保持在屏幕的中心?
  • 尝试仅使用顶部约束和左侧约束以及纵横比约束。
  • 您不能将之前的值用于顶部和左侧约束。您必须将左侧约束设置为(屏幕的百分比宽度 + 图像宽度的一半),顶部约束设置为(屏幕的百分比高度 + 图像高度的一半)。我猜这个百分比会在 20% 左右,但你应该尝试这个数字两边的值。甚至可能是 15%。甚至可能是不同的宽度和高度值。当然,这意味着以编程方式而不是通过情节提要来处理约束。
  • 我不知道为什么我没有想到可以设置的约束来水平和垂直居中对象!使用您需要的任何偏移量!然后你就不需要任何顶部、底部、左侧或右侧的约束了!
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 2023-03-14
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
相关资源
最近更新 更多