UIButton的背景图片

一直在使用UIButton创建按钮,包括Plain纯文字型的按钮、设置背景图片、设置选中状态图片按钮…特别是当我们的提供的图片比按钮本身的尺寸小时,会导致按钮没有被图片完全填充,当图片比button大时,图片会超出button的frame范围(除非设置button.layer.maskToBounds = YES可防止超出button的frame)。其实UIButton已经提供了给我们自由定制button的接口,只是很多人都没有注意到它的存在。我们只要继承UIButton类,然后在其子类中重写下面的几个方法中的一个或者几个,便可以自由控制UIButton中的image、label等的位置。

// these return the rectangle for the background (assumes bounds), the content (image + title) and for the image and title separately. the content rect is calculated based
// on the title and image size and padding and then adjusted based on the control content alignment. there are no draw methods since the contents
// are rendered in separate subviews (UIImageView, UILabel)

- (CGRect)backgroundRectForBounds:(CGRect)bounds;
- (CGRect)contentRectForBounds:(CGRect)bounds;
- (CGRect)titleRectForContentRect:(CGRect)contentRect;
- (CGRect)imageRectForContentRect:(CGRect)contentRect;

原文地址:https://www.cnblogs.com/weixiaochao/p/8975305.html

时间: 2024-10-08 18:37:18

UIButton的背景图片的相关文章

UIButton设置imgae图片自适应button的大小且不变形

在某些情况下,我们使用的UIButton的背景图片不一定就是标准的尺寸,有时会偏大,那么怎么办? 这个比较简单直接设置 :    self.imageView.contentMode = UIViewContentModeScaleAspectFill; 但是问题来了,如果图片尺寸比较button的bounds 小的话,他不会撑满整个控件默认会居中显示,有些时候这并不是我们想要的效果.有时我们希望他能撑满整个button. 1 - (CGRect)imageRectForContentRect:

UIButton状态:添加图片:

UIButton状态:UIControlStateNormal          // 正常状态  UIControlStateHighlighted     // 高亮状态  UIControlStateDisabled        // 禁用状态   UIControlStateSelected        // 选中状态   UIControlStateApplication     //    UIControlStateReserved        // 保留状态UIButton

UIButton实现背景拉伸

UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种: 第一种方法很简单而且使用性更广.做法就是直接拉伸想要setBackgroundImage的image,代码如下: UIImage *image = [UIImage imageNamed:@"image.png"]; image = [image stretchableImageWithLeftCapWidth:floorf(image.size.width/2) topCapHeight:floorf(imag

navigationItem.rightBarButtonItem 设置背景图片,颜色更改解决办法

self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"MoreImage"] style:UIBarButtonItemStylePlain target:self action:@selector(moreItemPress)]; 用这种方法,设置的背景图片,颜色变掉了.不是原来设置的图片颜色. 可以用另外一种方式,可以解决变色的问题. U

MFC 加入背景图片并让控件背景透明

/*加入背景图片*/ BOOL CTOOLDlg::OnEraseBkgnd(CDC* pDC) { // TODO: 在此加入消息处理程序代码和/或调用默认值 CDialog::OnEraseBkgnd(pDC); HBITMAP   m_hBitmap; HDC           m_hBkDC; m_hBitmap   =   ::LoadBitmap(::GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP2)); m_hBkDC     =

练习,背景图片开发慕课网右下角工具条

前几天学的慕课的一个课程,侧栏工具条开发.这门课程主要的学习价值: 1. 讲解的案例场景很实用,用到的技术点也较多,主要有css精灵,background-position,css transition,requirejs,sass,图标字体等: 2. 原理分析彻底,html结构清晰,sass逻辑合理,最重要的是在讲解过程中体现出的工作方法和工作态度,都能看出讲师的一些优秀的职业素质: 这门课的练习价值: 1. 掌握以上提到的知识点. 2. 看看在这个过程中会有哪些思考总结. 今天实现的方式是第

quick-cocos2d-x教程9:实例之加上背景图片

在梳理完quick-cocos2d-x框架的各个目录后,我们开始我们的实例教程,在helloworld后面,加上一张图片,lua编辑器,我用的lua editor,还不错. 我们首先还是参照教程,创建一个game01.命令:create_project -p com.cocos2dlua.game01 -r landscape,这次命令,我加了一个-r,设置为横向的屏幕 用quickplayer 打开game01, 显示helloworld,正常. 然后把game01\scripts目录下的co

vscode设置背景图片

最近在知乎上看见有人设置了vscode编辑器的背景图片,觉得很新鲜,就尝试以一下,倒是成功了. 1.首先在vscode扩展中,找到background这个插件,快捷键Ctrl+shift+x 2.完成第一步就已经有默认背景了,可是想设置自己喜欢的怎么办?往下看 打开 文件>首选项>设置 在右侧设置里 "background.enabled": true, "background.useDefault": false, "background.c

css 背景图片拉伸[转]

http://www.jeasyuicn.com/css-background-image-stretching.html background-image:url(bg.png); -moz-background-size: 100% 100%; -o-background-size: 100% 100%; -webkit-background-size: 100% 100%; background-size: 100% 100%; -moz-border-image: url(bg.png)