首先,我使用的是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
先谢谢你了
2条答案
按热度按时间qzlgjiam1#
我假设你使用的是Xcode 13 Storyboard Designer。
如果是,请将按钮样式从“Plain”更改为:
到“默认”:
现在,您的图像将适合受约束的按钮大小。
4ngedf3f2#
如果你使用Xcode
然后呢
如果您使用的是ImageButton,请首先在脚本中找到View部分
找到“视图”节后
找到剪辑到边界复选标记
然后像下面这样选中True
现在您的图像将适合按钮大小
您也可以通过代码来实现这一点
假设您按钮名称是buttonOne
然后
这也使您的图像适合您的imageButton大小。