- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在对即将发布的应用程序进行最后的润色,但我遇到了将 UIButton
的背景图像的 contentMode
设置为受到尊重。无论我指定的 contentMode
是什么,图像都会在背景中弹出,而不考虑 contentMode
设置。
我看过一个 post涵盖了这个主题,但在我的情况下它似乎没有任何作用。
这是从 viewDidLoad
调用的:
// I tried putting the contentMode lines here...
myButton.imageView!.contentMode = .scaleAspectFit
myButton.contentMode = .scaleAspectFit
myButton.setBackgroundImage(UIImage(named: "myImage.png"), for: .normal)
// ...and here
// myButton.imageView!.contentMode = .scaleAspectFit
// myButton.contentMode = .scaleAspectFit
// I threw this in for S's & G's to see if it would work...it didn't
myButton.translatesAutoresizingMaskIntoConstraints = false
myButton.imageView?.translatesAutoresizingMaskIntoConstraints = true
我不确定我错过了什么,但我确信这对我来说会是非常愚蠢的事情。我欢迎就如何使 UIButton
的背景图像的 contentMode
得到尊重提出建议。感谢您的阅读。
更新
该按钮被键入为自定义按钮,而不是系统按钮。
最佳答案
问题是您使用 setBackgroundImage()
方法添加图像。这会将您的图像添加到一些您无法像 myButton.imageView!
那样直接访问的私有(private) UIImageView
。在您的代码中,您正在为您的按钮应用 contentType
而不是它的背景图片。
如果你想达到这个背景 UIImageView
你需要使用 subviews
数组。但是,如果您尝试在 viewDidLoad()
方法中执行此操作,您会发现背景 UIImageView
尚未添加,因为您的按钮 layout
方法没有被调用。有两种方法可以解决这个问题。
解决方案 1 – 显式调用 layoutIfNeeded
:
override func viewDidLoad() {
super.viewDidLoad()
myButton.setBackgroundImage(UIImage(named: "myImage"), for: .normal)
myButton.layoutIfNeeded()
myButton.subviews.first?.contentMode = .scaleAspectFit
}
解决方案 2 – 在 viewDidAppear
方法中移动 contentMode
设置。
override func viewDidLoad() {
super.viewDidLoad()
myButton.setBackgroundImage(UIImage(named: "myImage"), for: .normal)
myButton.setTitle("Some title", for: .normal)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
myButton.subviews.first?.contentMode = .scaleAspectFit
}
希望对你有帮助。
关于ios - 不尊重 UIButton 的 backgroundImage 的内容模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40246367/
我在下面的代码中将UITableViewCell的所有背景图像设置为相同的模式: - (void) tableView:(UITableView *)tableView willDisplayCell
我想在表格 View 中创建一个简单的复选框。首先,我在 Storyboard中创建 View ,每个元素在单元格中都有一个标签。然后我在 Controller.m 中编写了代码 - (UITable
我正在尝试让背景图像交替。它以前是工作的,但现在有些东西已经关闭了。现在背景与 CSS 设置的相同,我想更改它以替换它。 var widthOfBrowser = window.innerWidth;
首先我制作了一个带有拖放功能的桌面 AIR 应用程序来查看图 block 图像,但由于一些问题,我尝试在 C# 中制作相同的应用程序。你认为什么是更好的选择? (我知道这个小程序的性能不是问题,但我的
这个问题在这里已经有了答案: What do querySelectorAll and getElementsBy* methods return? (12 个答案) 关闭 6 年前。
这是我从图像 url 获取流的方式: using (var httpClient = new HttpClient()) { response
我是 Java 的新手,我想将背景图像添加到 Composite。我只能使用 SWT,不能使用 JFace。我正在使用 eclipse indigo IDE (3.8),当我想设置背景图像时,首先我将
我正在构建一个程序,该程序从数组中随机选择图像并将其显示到屏幕上。现在,我计划使用一个数组来存储各种图像 url,这些图像 url 可以由一个函数引用,该函数随机选择其中一个并使用该值来设置特定元素的
我最近从业务应用程序编程转向尝试(作为一种爱好)在 .NET (C#) 中创建纸牌游戏实现。当然,我遇到了一些差异,其中之一是游戏应用程序的图形特性。 本能地,我将所有用作窗体和控件背景的图像保存为
我在页面上有一个使用 css 设置背景图像的元素: // CSS snippet .mystyle { background-image: url(some_image.gif); /
情况 我正在使用 BackgroundImage 为 JavaFX 区域设置背景,如下所示: region.setBackground(Background(BackgroundImage(Image
我已经尝试了所有我能想到的方法,并且用谷歌搜索到了死。我无法让 React 使用内联样式加载背景图像。这是我的代码: const url = './assets/backgrounds/terzo1.
现在我正在写这个来设置 UIBarButtonItem 的背景图像: [[UIBarButtonItem appearance] setBackgroundImage:image forState:U
我使用 javascript 来显示我的背景图像,因为我希望在每次重新加载时都有一个随机背景图像。不管怎样,正因为如此,我典型的 CSS 过渡和动画不起作用,因为它不是淡化背景,而是淡化我体内的文本。
我有一个 JavaFX 元素,我在其中定义了如下背景: setBackground(new Background(new BackgroundImage(new Image("/images/Acht
我有一个包含不同路由的 Meteor 元素。 在我的一个 css 文件中有: body { font-family: 'Roboto', sans-serif; font-size:
我想在 Label 上设置背景图片。我发现 Microsoft不允许这样做。但是,我想自己实现。代码在下面,问题是如何以编程方式设置背景图像?仍然没有要设置的 BackgroundImage 属性。
我有一个窗口窗体,我在其中将 BackgroundImage 属性设置为自定义位图图像。 private Image MakeCustomBackground(){ Bitmap result
我有这个代码: myButton.setBackgroundImage(UIImage(named: "image1"), for: .normal) 我正在尝试从代码级别为按钮添加背景。我想设置适合
在 UIButton 上我设置这样的背景图像 [twitterButton setBackgroundImage:twitterImage forState:UIControlStateNormal]
我是一名优秀的程序员,十分优秀!