设置UIButton上面是image,下面是title

此处写了一个UIButton的子类,添加了一个设置titleEdgeInsets和imageEdgeInsets

的方法,代码如下:

1 #import <UIKit/UIKit.h>
2 
3 @interface UIButton_ImageAndTitle : UIButton
4 
5 // space是图片与标题之间的间隙
6 - (void)setImageAndTitleEdgeInsets:(float)space;
7 
8 @end

方法实现:

 1 #import "UIButton_ImageAndTitle.h"
 2 
 3 @implementation UIButton_ImageAndTitle
 4 
 5 - (void)setImageAndTitleEdgeInsets:(float)space {
 6     CGSize imageSize = self.imageView.frame.size;
 7     CGSize titleSize = self.titleLabel.frame.size;
 8     CGFloat totalHeight = (imageSize.height + titleSize.height + space);
 9     
10     self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
11     
12     [self setImageEdgeInsets:UIEdgeInsetsMake(- (totalHeight - imageSize.height), 0.0, 0.0, - titleSize.width)];
13     [self setTitleEdgeInsets:UIEdgeInsetsMake(0.0, - imageSize.width, - (totalHeight - titleSize.height), 0.0*KSCALE_WIDTH)];
14 }
15 
16 @end

用的时候很简单:

1 self.btnFlash = [[UIButton_ImageAndTitle alloc] init];
2     _btnFlash.bounds = CGRectMake(0, 0, size.width, size.height);
3     _btnFlash.center = CGPointMake(CGRectGetWidth(_bottomItemsView.frame) * 3/4, CGRectGetHeight(_bottomItemsView.frame)/2);
4      [_btnFlash setImage:[UIImage imageNamed:@"CodeScan.bundle/scan_flash_default"] forState:UIControlStateNormal];
5     [_btnFlash setImage:[UIImage imageNamed:@"CodeScan.bundle/scan_flash_selected"] forState:UIControlStateSelected];
6     [_btnFlash setTitle:@"打开手电筒" forState:UIControlStateNormal];
7     [_btnFlash setImageAndTitleEdgeInsets:10*KSCALE_HEIGHT];
8     [_btnFlash addTarget:self action:@selector(openOrCloseFlash:) forControlEvents:UIControlEventTouchUpInside];

 

我这里的效果如下:

 

转载于:https://www.cnblogs.com/Walking-Jin/p/7994291.html

以下是可能实现上述功能的MATLAB代码: ```matlab % 定义图像文件名 img_file = 'image.jpg'; % 读取图像文件 img = imread(img_file); % 定义时间变化的频率函数 freq_func = @(t) sin(t); % 定义低通滤波器 lp_filter = fspecial('gaussian', [5 5], 2); % 定义高通滤波器 hp_filter = fspecial('laplacian'); % 创建GUI窗口 fig = uifigure('Name', 'Filter Image'); % 创建显示图像的Axes ax = uiaxes(fig); ax.Position = [50 100 500 400]; % 创建按钮1,按下显示低通滤波器处理后的图像 btn1 = uibutton(fig, 'push', 'Text', 'Low-pass Filter', 'Position', [50 50 150 30], 'ButtonPushedFcn', @(btn1,event) showFilteredImage(ax, img, lp_filter, freq_func)); % 创建按钮2,按下显示高通滤波器处理后的图像 btn2 = uibutton(fig, 'push', 'Text', 'High-pass Filter', 'Position', [250 50 150 30], 'ButtonPushedFcn', @(btn2,event) showFilteredImage(ax, img, hp_filter, freq_func)); function showFilteredImage(ax, img, filter, freq_func) % 计算当前时间的频率 freq = freq_func(now); % 应用滤波器 filtered_img = imfilter(img, filter, 'circular'); % 显示滤波后的图像 imshow(ax, filtered_img); % 设置Axes标题 if filter == lp_filter title(ax, sprintf('Low-pass Filter (Freq: %.2f)', freq)); elseif filter == hp_filter title(ax, sprintf('High-pass Filter (Freq: %.2f)', freq)); end end ``` 这段代码创建了一个GUI窗口,包含一个显示图像的Axes和两个按钮。按下按钮1会显示低通滤波器(使用高斯核)处理后的图像,按下按钮2会显示高通滤波器(使用拉普拉斯核)处理后的图像。图像文件名、时间变化的频率函数、滤波器的类型和参数都可以根据需要进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值