ios - 我想要一个带有三角形图标的按钮

标签 ios objective-c iphone uibutton

我想制作一个带有三角形图标的按钮,如iBooks应用风格。

按下按钮后,将显示列表屏幕。
然后选择一个列表,该按钮的语句将为所选文本和一个三角形图标。图标始终在右侧。

[self.button setImage:[UIImage imageNamed:@"arrow-down"] forState:UIControlStateNormal];
CGFloat titleWidth = self.button.titleLabel.bounds.size.width;
CGFloat imageWidth = self.button.imageView.bounds.size.width;
// Title is left Image is right
self.button.titleEdgeInsets = UIEdgeInsetsMake(0, -imageWidth, 0, imageWidth);
self.button.imageEdgeInsets = UIEdgeInsetsMake(0, titleWidth, 0, -titleWidth);

因此,我尝试制作一个示例应用程序。

https://github.com/kawai-hiroyuki/LikeIBooksDropDownMenu

但是,图标的位置将完全偏离。
我将如何做总是被安装在右边的图标。

最佳答案

我通过子类化UIButton并重写setTitle:forState:来添加空格,然后在unicode中添加了一个向下箭头,从而非常轻松地做到了这一点。只需设置标题,箭头就会自动以正确的字体添加。它还处理极长的名称,例如“Extremely ... name▼”

- (void)setTitle:(NSString *)title forState:(UIControlState)state
{
    title = [title stringByAppendingString:@" \u25BE"]; //Unicode - Small down arrow
    [super setTitle:title forState:state];
    [self sizeToFit];
}

如果您想要一个示例,或者只是一个完整的子类(也是一个下拉菜单),我建议this
免责声明:我做到了。

关于ios - 我想要一个带有三角形图标的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25530135/

相关文章:

ios - iOS上载带有视频信息GTLServiceYoutube的视频

objective-c - objective-c 中的多个委托(delegate)

iphone - cocoa touch : Accessor method + memory needs clarification

iphone - 检查 nsstring 中的多个字符

ios - 从 UITableView 播放视频

ios - 创建一个可以嵌入到 UIViews 中并处理自己的模态的可重用控件

iOS:以编程方式打开 Wifi 设置屏幕

ios - UITableView WillDisplayCell 方法在特定时间后调用?

iphone - 如何找到准确的手机信号强度和服务提供商名称?

objective-c - 在 objective-c 中将一个图像放在另一个图像之上用于按钮