UIButton 图像忽略其边界

问题描述 投票:0回答:2

首先,我使用的是 Xamarin iOS。

每当我尝试设置 UIButton 的图像时,图像就会变得与整个屏幕一样大。我希望该图像适合 UIButton 的边界/框架。

我尝试过使用PDF图像和PNG图像(屏幕截图中的图像是png)。它们都忽略了它们嵌入的实际 UIButton 的框架和大小。

这是 UIButton 在 xcode 故事板中的外观。它与超级视图的垂直和水平中间对齐,宽度为超级视图的 0.25 倍,长宽比为 1:1。我也尝试给它一个固定的高度和宽度,但这没有帮助。

我调试了帧大小,但发现它保持不变并且不受 UIButtons 图像的影响。

总结一下我迄今为止尝试过但不起作用的所有内容:

public partial class ViewController : UIViewController
{
    public ViewController(IntPtr handle) : base(handle)
    {
    }

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        
        // 1.
        Btn.SetImage(UIImage.FromBundle("skip"), UIControlState.Normal);
        // 2.
        Btn.SetBackgroundImage(UIImage.FromBundle("skip"), UIControlState.Normal);
        // 3.
        Btn.ContentMode = UIViewContentMode.ScaleAspectFill;
        Btn.ContentMode = UIViewContentMode.ScaleAspectFit;
        Btn.ImageView.ContentMode = UIViewContentMode.ScaleAspectFill;
        Btn.ImageView.ContentMode = UIViewContentMode.ScaleAspectFit;
        // 4.
        Btn.ImageEdgeInsets = new UIEdgeInsets(100, 100, 100, 100);
        Btn.ContentEdgeInsets = new UIEdgeInsets(100, 100, 100, 100);
        // 5.
        UIImage image = UIImage.FromBundle("skip");
        image.CreateResizableImage(new UIEdgeInsets(10, 10, 10, 10));
        Btn.SetImage(image, UIControlState.Normal);
        // 6.
        image.Scale(new CGSize(Btn.Frame.Width, Btn.Frame.Height), 0.1f);
        Btn.SetImage(image, UIControlState.Normal);
    }
}

我在模拟器上测试的所有设备(iPhone 11、iPhone 12、iPhone 12 mini、iPod touch)上都存在此问题。我还无法在真实设备上测试它。

互联网上似乎没有其他人有这个问题。我缺少什么?这可能是一件微不足道的事情,但我无法弄清楚。

提前致谢

c# ios xcode xamarin.ios uibutton
2个回答
10
投票

我假设您正在使用 Xcode 13 Storyboard 设计器。

如果是这样,请将按钮样式从“普通”更改为:

至“默认”:

现在您的图像将适合受限的按钮尺寸。


0
投票

如果您使用的是XCode

还有

如果您使用的是 ImageButton,请首先在故事板中找到 View 部分

找到查看部分后

找到剪辑到边界复选标记

然后像下面一样检查 True

现在您的图像将适合按钮尺寸

您也可以通过代码来完成此操作

假设您的按钮名称是buttonOne

那么,

buttonOne.clipsToBounds = true

这也使您的图像适合您的图像按钮尺寸。

© www.soinside.com 2019 - 2024. All rights reserved.