在开发过程中经常遇到 按钮 与图标的放置问题,有时按钮中图片与文字的位置需要我们设置。
一种方法是我们根据具体情况利用titleEdgeInsets、imageEdgeInsets这两个属性来设置具体的位置,另一种是我们直接封装一个imageView和label 来在定义button。两种方法都可以,在Swift中使用扩展 UIButton 来设置 titleEdgeInsets、imageEdgeInsets 感觉更灵活更方便一些。
-
直接上代码:
enum ButtonEdgeInsetsStyle { case ButtonEdgeInsetsStyleTop // image在上,label在下 case ButtonEdgeInsetsStyleLeft // image在左,label在右 case ButtonEdgeInsetsStyleBottom // image在下,label在上 case ButtonEdgeInsetsStyleRight // image在右,label在左 } extension UIButton { func layoutButtonEdgeInsets(style:ButtonEdgeInsetsStyle,space:CGFloat) { var labelWidth : CGFloat = 0.0 var labelHeight : CGFloat = 0.0 var imageEdgeInset = UIEdgeInsetsZero var labelEdgeInset = UIEdgeInsetsZero let imageWith = self.imageView?.frame.size.width let imageHeight = self.imageView?.frame.size.height if Double(UIDevice.currentDevice().systemVersion) >= 8.0 { labelWidth = (self.titleLabel?.intrinsicContentSize().width)! labelHeight = (self.titleLabel?.intrinsicContentSize().height)! }else { labelWidth = (self.titleLabel?.frame.size.width)! labelHeight = (self.titleLabel?.frame.size.height)! } labelWidth = CGFloat(36) switch style { case .ButtonEdgeInsetsStyleTop: imageEdgeInset = UIEdgeInsetsMake(-labelHeight-space/2.0, 0, 0, -labelWidth) labelEdgeInset = UIEdgeInsetsMake(0, -imageWith!, -imageHeight!-space/2.0, 0) case .ButtonEdgeInsetsStyleLeft: imageEdgeInset = UIEdgeInsetsMake(0, -space/2.0, 0, space/2.0); labelEdgeInset = UIEdgeInsetsMake(0, space/2.0, 0, -space/2.0); case .ButtonEdgeInsetsStyleBottom: imageEdgeInset = UIEdgeInsetsMake(0, 0, -labelHeight-space/2.0, -labelWidth) labelEdgeInset = UIEdgeInsetsMake(-imageHeight!-space/2.0, -imageWith!, 0, 0) case .ButtonEdgeInsetsStyleRight: // To Do print("坐标是====\(labelWidth)=====\(space)") imageEdgeInset = UIEdgeInsetsMake(0, labelWidth+space/2.0, 0, -labelWidth-space/2.0) labelEdgeInset = UIEdgeInsetsMake(0, -imageWith!-space/2.0, 0, imageWith!+space/2.0) } self.titleEdgeInsets = labelEdgeInset self.imageEdgeInsets = imageEdgeInset } }
如代码所示,我们通过枚举,来列出图片与文字可能出现的位置,这样就能在方法中根据具体情况来展示文字与图片的位置。至于第二种方法我们可以通过xib或者纯代码封装一个button,在这里就不介绍了。
Swift button 设置图片位置
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 项目中我们经常会有这样的需求,button中图片左标题右,图片上标图下,图片下标题上,图片右标题左;感觉挺简单的是...
- 一。创建不同的一个分类打补丁 button文字图片显示类型 typedefNS_ENUM(NSUInteger, ...
- 先理解下面 (不理解也行,会调用就可以) Button有两个属性:titleEdgeInsets和imageEdg...
- 为了防止丢失或遗忘,记录下这个UIButton的分类,用来实现上下,左右的iamge与title位置的按钮布局。 ...
- 如果一个界面上就只有这一个功能,总不能再去用个 TableView 来写吧,太麻烦啦😉 如果自己加个大于号,又抵挡...