
1、使用- setImage:forState:和- setBackgroundImage:forState:设置的图片在点击时都会有变暗的效果。
2、- setImage:forState:设置的图片不管UIButton大小都保持图片尺寸;- setBackgroundImage:forState:设置的图片会拉伸填充整个UIButton。(设置UIButton.imageView.contentMode不会影响这两种方式设置的图片的显示方式,设置UIButton.imageView.image也无效,设置UIButton.contentMode也看不出有什么效果。)
1、使用- setTitle:forState:UIControlStateNormal设置文字,如果UIButton通过[UIButton buttonWithType:UIButtonTypeSystem]创建,则文字点击时有变暗效果,如果通过[[UIButton alloc] init]创建则点击时没有变暗效果。
1、iOS15之后被弃用(Deprecated)。
2、iOS15之前,设置图片文字居中且图片靠上文字靠下:
/*
button.titleEdgeInsets = UIEdgeInsetsMake(CGRectGetHeight(button.frame) - CGRectGetHeight(button.titleLabel.frame), -CGRectGetWidth(button.imageView.frame), 0, 0);
button.imageEdgeInsets = UIEdgeInsetsMake(-(CGRectGetHeight(button.frame) - CGRectGetHeight(button.imageView.frame)), 0, 0, -CGRectGetWidth(button.titleLabel.frame));
①必须先设置titleEdgeInsets再设置imageEdgeInsets,否则当文字很长时会导致图片不居中(比如文字在修改titleEdgeInsets和imageEdgeInsets之前显示不全的情况);
②设置titleEdgeInsets时,必须在访问button.frame之前先访问button.imageView;
③设置imageEdgeInsets时,必须在设置完titleEdgeInsets之后再访问button.titleLabel.frame获取宽度,也许是因为设置完titleEdgeInsets之后titleLabel.frame即刻变了;
……(也许还有其他的因为访问顺序问题导致位置不符合预期)
*/
CGFloat imageW = CGRectGetWidth(button.imageView.frame);
button.titleEdgeInsets = UIEdgeInsetsMake(CGRectGetHeight(button.frame) - CGRectGetHeight(button.titleLabel.frame), -imageW, 0, 0);
button.imageEdgeInsets = UIEdgeInsetsMake(-(CGRectGetHeight(button.frame) - CGRectGetHeight(button.imageView.frame)), 0, 0, -CGRectGetWidth(button.titleLabel.frame));
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)