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

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

我调试了帧大小,但发现它保持不变,不受UIButtons图像的影响。
总结一下我迄今尝试过的、但没有奏效的一切:
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)。我还不能在真正的设备上测试它。
似乎互联网上没有其他人有这个问题。我遗漏了什么?这可能是一件小事,但我想不出来。
提前感谢
发布于 2021-11-29 21:56:20
我假设您正在使用Xcode 13童话板设计器。
如果是,请将Button样式从“平原”更改为:

改为“默认”:

现在,您的图像将适合受约束的按钮大小。
发布于 2022-08-28 11:59:49
如果您使用的是XCode
和
如果您正在使用ImageButton,请首先在故事板中找到View部分
在找到视图部分之后
查找剪辑到边界复选标记

然后按下面的方式检查True

现在,您的图像将符合按钮大小。
您也可以通过代码来完成这一任务。
假设您的按钮名为buttonOne
然后,
buttonOne.clipsToBounds = true这也使您的图像符合您的imageButton大小。
https://stackoverflow.com/questions/70124551
复制相似问题