使 UIButton 图像适合按钮
Make UIButton Image fit into the Button
首先,我正在使用 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();
// 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)都存在这个问题。我还不能在真实设备上测试它。
网上好像没有人遇到过这个问题。我错过了什么?这可能是微不足道的,但我无法弄清楚。
提前致谢
我假设您使用的是 Xcode 13 故事板设计器。
如果是这样,将按钮样式从“普通”更改为:
到“默认”:
现在您的图片将适合受限的按钮大小。
首先,我正在使用 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();
// 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)都存在这个问题。我还不能在真实设备上测试它。
网上好像没有人遇到过这个问题。我错过了什么?这可能是微不足道的,但我无法弄清楚。
提前致谢
我假设您使用的是 Xcode 13 故事板设计器。
如果是这样,将按钮样式从“普通”更改为:
到“默认”:
现在您的图片将适合受限的按钮大小。