ios - 右侧图像的按钮从右侧对齐 x 点
<p><p>我正在尝试创建一个如下所示的按钮:</p>
<p> <a href="/image/ZO9Nj.png" rel="noreferrer noopener nofollow"><img src="/image/ZO9Nj.png" alt="enter image description here"/></a> </p>
<p>所以它有一个边框和一个右 ImageView 。</p>
<p>我这样子类化 UIButton:</p>
<pre><code>class ButtonWithRightImage: UIButton {
override func imageRectForContentRect(contentRect:CGRect) -> CGRect {
var imageFrame = super.imageRectForContentRect(contentRect)
imageFrame.origin.x = CGRectGetMaxX(super.titleRectForContentRect(contentRect)) - CGRectGetWidth(imageFrame)
return imageFrame
}
override func titleRectForContentRect(contentRect:CGRect) -> CGRect {
var titleFrame = super.titleRectForContentRect(contentRect)
if (self.currentImage != nil) {
titleFrame.origin.x = CGRectGetMinX(super.imageRectForContentRect(contentRect))
}
return titleFrame
}
}
</code></pre>
<p>我按如下方式创建了我的按钮:</p>
<pre><code>lazy var testButton: ButtonWithRightImage = {
let button = ButtonWithRightImage(forAutoLayout: ())
button.setTitle("Privacy", forState: .Normal)
button.setTitleColor(UIColor.DarkBlue(), forState: .Normal)
button.layer.borderWidth = 1
button.layer.borderColor = UIColor.grey().CGColor
button.setImage(UIImage(named: "arrow"), forState: .Normal)
button.contentHorizontalAlignment = .Left
button.contentEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0)
return button
}()
</code></pre>
<p>现在我的按钮看起来像这样:</p>
<p> <a href="/image/hfitj.png" rel="noreferrer noopener nofollow"><img src="/image/hfitj.png" alt="enter image description here"/></a> </p>
<p>如您所见,图像未与右侧 20 点对齐。
我不知道该怎么做。我正在使用自动布局来显示按钮,所以我不能只修改我猜的框架。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>由于您的 ButtonWithRightImage 类需要修改以根据您的要求实现输出。 </p>
<pre><code>class ButtonWithRightImage: UIButton {
override func imageRectForContentRect(contentRect:CGRect) -> CGRect {
var imageFrame = super.imageRectForContentRect(contentRect)
imageFrame.origin.x = CGRectGetWidth(contentRect) - CGRectGetWidth(imageFrame)
return imageFrame
}
override func titleRectForContentRect(contentRect:CGRect) -> CGRect {
var titleFrame = super.titleRectForContentRect(contentRect)
if (self.currentImage != nil) {
titleFrame.origin.x = CGRectGetMinX(super.imageRectForContentRect(contentRect))
}
return titleFrame
}
}
</code></pre>
<p>问题是您需要从 <code>容器宽度</code> 中减去图像宽度。而不是 <code>container maxX</code> 值。</p>
<p>如果您对此有任何意见,请告诉我。</p>
<p>谢谢</p></p>
<p style="font-size: 20px;">关于ios - 右侧图像的按钮从右侧对齐 x 点,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/39545159/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/39545159/
</a>
</p>
页:
[1]