xcode UIButton图像忽略其边界

eblbsuwk  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(110)

首先,我使用的是Xamarin iOS。
每当我尝试设置UIButton的图像时,图像就会变得和整个屏幕一样大。我希望该图像适合UIButton的边界/框架。

我试过使用PDF图像和PNG图像(截图中的图像是PNG)。它们都忽略了它们所嵌入的实际UIButton的框架和大小。
下面是UIButton在xcode故事板中的外观。它与超级视图的垂直和水平中间对齐,宽度为超级视图的0.25倍,纵横比为1:1。我也试着给它一个固定的高度和宽度,但这没有帮助。

我调试了帧大小,但发现它保持不变,不受UIButton图像的影响。
总结一下到目前为止我尝试过的所有不起作用的东西:

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

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        
        // SetImage -> makes image as big as the screen
        Btn.SetImage(UIImage.FromBundle("skip"), UIControlState.Normal);
        // SetBackgroundImage -> Image doesn't appear at all, maybe I'm forgetting something?
        Btn.SetBackgroundImage(UIImage.FromBundle("skip"), UIControlState.Normal);
        // none of these things do literally anything
        Btn.ContentMode = UIViewContentMode.ScaleAspectFill;
        Btn.ContentMode = UIViewContentMode.ScaleAspectFit;
        Btn.ImageView.ContentMode = UIViewContentMode.ScaleAspectFill;
        Btn.ImageView.ContentMode = UIViewContentMode.ScaleAspectFit;
        // also have no impact on the image at all
        Btn.ImageEdgeInsets = new UIEdgeInsets(100, 100, 100, 100);
        Btn.ContentEdgeInsets = new UIEdgeInsets(100, 100, 100, 100);
        // also does nothing
        UIImage image = UIImage.FromBundle("skip");
        image.CreateResizableImage(new UIEdgeInsets(10, 10, 10, 10));
        Btn.SetImage(image, UIControlState.Normal);
        // no luck again
        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)。我还不能在真实的的设备上测试它。
似乎互联网上没有人有这个问题。我错过了什么?这可能是一些微不足道的事情,但我不能把它弄清楚。
Minimal reproducible project
先谢谢你了

qzlgjiam

qzlgjiam1#

我假设你使用的是Xcode 13 Storyboard Designer。
如果是,请将按钮样式从“Plain”更改为:

到“默认”:

现在,您的图像将适合受约束的按钮大小。

4ngedf3f

4ngedf3f2#

如果你使用Xcode
然后呢
如果您使用的是ImageButton,请首先在脚本中找到View部分
找到“视图”节后
找到剪辑到边界复选标记

然后像下面这样选中True

现在您的图像将适合按钮大小
您也可以通过代码来实现这一点
假设您按钮名称是buttonOne
然后

buttonOne.clipsToBounds = true

这也使您的图像适合您的imageButton大小。

相关问题