『壹』 iOS 調整UIButton 圖片(imageView)與文字(titleLabel)的位置
UIButton可以同時設置Title和Image,UIButton有兩個屬性:titleEdgeInsets(top,left,bottom,right)和imageEdgeInsets(top,left,bottom,right),通過設置這兩個,就可以實現所有需要的Button的樣式
UIButton 的 默認狀態下imageEdgeInsets = UIEdgeInsetsMake(0,0,0,0);titleEdgeInsets = UIEdgeInsetsMake(0,0,0,0); 圖片在左文字在右,而且整體水平和垂直居中 。比如下面這個圖文按鈕:
為了最美觀一點,可以設置圖標與文字間距 。如下圖:
設置圖片在右文字在左:
設置圖片在上,文字在下:
設置圖片左對齊:
設置文字右對齊:
設置文字左對齊,圖片右對齊:
『貳』 iOS button 按鈕 設置漸變或者layer之後無法展示文字或者圖片
CAGradientLayer *gl = [CAGradientLayer layer];
gl.frame = CGRectMake(0,0,100,24);
gl.startPoint = CGPointMake(0, 0);
毀坦粗 gl.endPoint = CGPointMake(1, 1);
gl.colors = @[( __bridge id )[UIColor colorWithRed:0/255.0 green:168/255.0 blue:79/255.0 alpha:1.0].CGColor,( __bridge id )[UIColor colorWithRed:26/255.0 green:186/255.0 blue:74/255.0 alpha:1.0].CGColor];
gl.locations = @[@(0.0),@(1.0f)];
[_continueStudyBtn.layer addSublayer:gl];
1.解決方法信搏。背景放在最底層纖鎮
[_continueStudyBtn.layer insertSublayer:gl atIndex:0];
[_continueStudyBtn bringSubviewToFront:_continueStudyBtn.imageView];
『叄』 IOS開發類似微信的文字輸入和語音輸入按鈕的切換
簡單寫一下吧,希望你能看懂
UIButton*button=...;//切換按鈕
UITextField*inputTextField=...;//逗鏈文字輸入文本框
UIButton*recordAudioButton=...;//錄音按鈕
//點擊button調用
-(void)changeMode
{
if(currentMode==@"TextInput"){
陵基inputTextField.hidden=NO;
recordAudioButton.hidden=YES;
[buttonsetImage:...(圖片1)forState:UIControlStateNormal];
}尺指謹else{
inputTextField.hidden=YES;
recordAudioButton.hidden=NO;
[buttonsetImage:...(圖片2)forState:UIControlStateNormal];
}
}
『肆』 ios當button載入完成已後,怎麼改變button的文字
如果你用的是IB,選中按鈕在右側屬性界面進行設置:按鈕類型(Type)設置為自定義,BackgroundImage選擇你的圖片,Title內輸入你要顯示的文字 代碼實現的話如下: //按鈕初始化 UIButton *myButton =[UIButton buttonWithType:UIButtonTypeCustom]; (注意此處使用便利構造器初始化的button,不需release) //設置按鈕圖片 [myButton setBackgroundImage:[UIImage imageNamed:@"myPic.png"] forState:UIControlStateNormal]; //設置文字 [myButton setTitle:@"確定" forState:UIControlStateNormal];
『伍』 IOS開發button點擊之後有高亮效果,效果一直保留,點擊下一個按鈕高亮效果轉移。
你初始化時給幾個btn設定4個值, 普通狀態時:文字顏悉改色,圖片狀態 高亮時:文字顏橡禪色,圖片狀睜如判態
然後設定第一個btn的selected = YES;
在點擊事件里處理時,點擊的btn.selected = YES; 然後你去拿2另外2個btn,設他們的selected屬性為NO
『陸』 iOS 開發,怎樣讓UIImageView實現UIButton的點擊效果,就是系統自帶的Button點擊會漸漸變色的效果
建議還是用自定義的UIButton來實現,2幅圖片和文字可以做成一整張圖,作為按鈕的貼圖就可以了。
『柒』 iOS開發 設置button的image的位置
開巧搜發過程中經常遇到通過imageEdgeInsets和titleEdgeInsets去孝野歷設置button中的image,title的位置,來達到想要的效果。但因為對其原理的不了解,經常碰壁,設置了卻達不到自己想要的效果。終於找到這篇文章,文章作者解析的很詳細,這里記錄一下,方便自己日後脊或查閱。
1.常用的button樣式,圖片在上,文字在下
『捌』 ios中uibutton 可以添加動態圖嗎
UIButton+WebCache.h
#import <UIKit/UIKit.h>游鋒
// 為Button添加類別神禪晌方法
@interface UIButton (WebCache)
- (void)xr_setButtonImageWithUrl:(NSString *)urlStr;
@end
UIButton+WebCache.m
#import "UIButton+WebCache.h"
@implementation UIButton (WebCache)
- (void)xr_setButtonImageWithUrl:(NSString *)urlStr {
NSURL * url = [NSURL URLWithString:urlStr];
// 根據圖片的url下載圖片數據
dispatch_queue_t xrQueue = dispatch_queue_create("loadImage", NULL); // 創建GCD線程隊襲散列
dispatch_async(xrQueue, ^{
// 非同步下載圖片
UIImage * img = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
// 主線程刷新UI
dispatch_async(dispatch_get_main_queue(), ^{
[self setImage:img forState:UIControlStateNormal];
});
});
}
@end
#import <UIKit/UIKit.h>
@interface XRViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *ImgBtn;
@end
#import "XRViewController.h"
#import "UIButton+WebCache.h"
@interface XRViewController ()
@end
@implementation XRViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)loadImg:(id)sender {
[self loadImage];
}
- (void)loadImage {
[_ImgBtn xr_setButtonImageWithUrl:@""];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
『玖』 ios中怎麼設置uibutton上字體的大小
1.在IOS程序中設置UIButton的字體大小:
btn.frame = CGRectMake(x, y, width, height);
[btn setTitle: @"search" forState: UIControlStateNormal];
//設置按鈕上的自體的大小
//[btn setFont: [UIFont systemFontSize: 14.0]]; //這種可以用來設置字體的大小,但是可能會在將來的SDK版本中去除改方法
//應該使用
btn.titleLabel.font = [UIFont systemFontOfSize: 14.0];
[btn seBackgroundColor: [UIColor blueColor]];
//最後將按鈕加入到指定視圖superView
[superView addSubview: btn];
附:創建按鈕的兩種方法:
1、動態創建
btnfont = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btnfont setFrame:CGRectMake(100, 10, 120, 40)];
[btnfont addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
[btnfont setTitle:@"字體" forState:UIControlStateNormal];
btnfont.backgroundColor=[UIColor clearColor];
[self.view addSubview:btnfont];
2、在xib文件中已經創建好,通過tag獲取按鈕
UIButton *testButton= (UIButton*)[self.view viewWithTag:100];
[testButton addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchUpInside];
注冊事件
-(void) test: (id) sender{
UIAlertView *av = [[[UIAlertView alloc] initWithTitle:@"ceshi" message:@"test11111" delegate:nil cancelButtonTitle:@"OK"otherButtonTitles:nil] autorelease];
[av show];
}
2.設置UIButton的文字顯示位置、字體的大小、字體的顏色
btn.frame = CGRectMake(x, y, width, height);
[btn setTitle: @"search" forState: UIControlStateNormal];
//設置按鈕上的自體的大小
//[btn setFont: [UIFont systemFontSize: 14.0]]; //這種可以用來設置字體的大小,但是可能會在將來的SDK版本中去除改方法
//應該使用
btn.titleLabel.font = [UIFont systemFontOfSize: 14.0];
[btn seBackgroundColor: [UIColor blueColor]];
//最後將按鈕加入到指定視圖superView
[superView addSubview: btn];
tvnamelabel=[[UIButton alloc]initWithFrame:CGRectMake(5,5,200,40)];
這樣初始化的button,文字默認顏色是白色的,所有如果背景也是白色的話,是看不到文字的,
btn.contentHorizontalAlignment= ;//設置文字位置,現設為居左,默認的是居中
[btn setTitle:@「title」forState:UIControlStateNormal];// 添加文字
有些時候我們想讓UIButton的title居左對齊,我們設置
btn.textLabel.textAlignment = UITextAlignmentLeft
是沒有作用的,我們需要設置
btn.contentHorizontalAlignment = ;
但是問題又出來,此時文字會緊貼到做邊框,我們可以設置
btn.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0);
使文字距離做邊框保持10個像素的距離。
設置UIButton上字體的顏色設置UIButton上字體的顏色,不是用:
[btn.titleLabel setTextColor:[UIColorblackColor]];
btn.titleLabel.textColor=[UIColor redColor];
而是用:
[btn setTitleColor:[UIColor blackColor]forState:UIControlStateNormal];
『拾』 iOS的UI開發中Button的基本編寫方法解析
一、簡單說明
一般情況下,點擊某個控制項後,會做出相應反應的都是按鈕
按鈕的功能比較多,既能顯示文字,又能顯示圖片,還能隨時調整內部圖片和文字的位置
二、按鈕的三種狀態
normal(普通狀態)
默認情況(Default)
對應的枚舉常量:UIControlStateNormal
highlighted(高亮狀態)
按鈕被按下去的時候(手指還未松開)
對應的枚舉常量:UIControlStateHighlighted
disabled(失效狀態,不可用狀態)
如果enabled屬性為NO,就是處於disable狀態,代表按鈕不可以被點擊
對應的枚舉常量:UIControlStateDisabled
三、注意點
(1)從Xcode5開始,圖片資源都放到Images.xcassets中進行管理,可以使用拖拽的方式添加項目中用到的圖片到Images.xcassets中
(2)若干多個控制項共用一段代碼,通常使用tag。
四、代碼示例
(1)
復制代碼 代碼如下:
#import "LFViewController.h"
@interface LFViewController ()
@property (weak, nonatomic) IBOutlet UIButton *headImageView;
@end
@implementation LFViewController
// 在OC中,絕大多數的控制項的監聽方法的第一個參數就是控制項本身
//- (IBAction)left:(UIButton *)button {
//
// NSLog(@"----");
//}
- (IBAction)move
{
// 通過frame修改head的位置
// 在OC中,不允許直接修改「對象」的「結構體屬性」的「成員」
// 允鍵塌許修改「對象」的'「結構體屬性」
// 1. 取出結構體屬性
CGRect rect = self.headImageView.frame;
// 2. 修改結構體成員
rect.origin.y -= 20;
// 3. 設置對象的結構體屬性
self.headImageView.frame = rect;
}
稿談圓(2)
復制代碼 代碼如下:
#import "LFViewController.h"
使用git
1. 創建項目時,勾選git
2. 開發告一段落後,選擇"Source Control""Commit",並編寫注釋
// 枚舉類型實侍早質上就是一個整數,作用就是用來替代魔法數字
// 枚舉類型中,指定了第一個整數之後,後面的數字會遞增
typedef enum
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight,
} kMovingDir;
#define kMovingDelta 50
@interface LFViewController ()
@property (weak, nonatomic) IBOutlet UIButton *headImageView;
@end
@implementation LFViewController
- (IBAction)move:(UIButton *)button
// CGRect rect = self.headImageView.frame;
CGPoint p = self.headImageView.center;
// magic number魔法數字,其他程序員看到代碼的時候,不知道是什麼意思
switch (button.tag) {
case kMovingDirTop:
p.y -= kMovingDelta;
break;
case kMovingDirBottom:
p.y += kMovingDelta;
break;
case kMovingDirLeft:
p.x -= kMovingDelta;
break;
case kMovingDirRight:
p.x += kMovingDelta;
break;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
self.headImageView.center = p;
[UIView commitAnimations];
- (IBAction)zoom:(UIButton *)button
CGRect rect = self.headImageView.bounds;
// 在C語言中,關於bool的判斷:非零即真
if (button.tag) {
rect.size.width += 50;
rect.size.height += 50;
rect.size.width -= 50;
rect.size.height -= 50;
// 首尾動畫
// beginAnimations表示此後的代碼要「參與到」動畫中
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
self.headImageView.bounds = rect;
// self.headImageView.alpha = 0;
// commitAnimations,將beginAnimation之後的所有動畫提交並生成動畫
[UIView commitAnimations];
@end
五、補充筆記
1. IBAction的參數
- (IBAction)left:(UIButton *)button
(1) 在OC中,絕大多數的控制項監聽方法的第一個參數就是控制項本身
(2) 默認連線時的參數類型是id
(3) 如果要在監聽方法中,方便控制項的使用,可以在連線時或者連線後,修改監聽方法的參數類型
2. 修改對象的結構體成員
在OC中,不允許直接修改「對象」的「結構體屬性」的「成員」,但是允許修改「對象」的「結構體屬性」
修改結構體屬性的成員方法如下:
(1)使用臨時變數記錄對象的結構體屬性
(2) 修改臨時變數的屬性
(3)將臨時變數重新設置給對象的結構體屬性
3. 在程序開發中需要避免出現魔法數字(Magic Number)
使用枚舉類型,可以避免在程序中出現魔法數字
(1)枚舉類型實質上就是一個整數,其作用就是用來替代魔法數字
(2)枚舉類型中,指定了第一個整數之後,後面的數字會遞增
4. frame & bounds & center
1> frame可以修改對象的位置和尺寸
2> bounds可以修改對象的尺寸
3> center可以修改對象的位置
5. 首尾式動畫
復制代碼 代碼如下:
// beginAnimations表示此後的代碼要「參與到」動畫中
[UIView beginAnimations:nil context:nil];
// setAnimationDuration用來指定動畫持續時間
[UIView setAnimationDuration:2.0];
self.headImageView.bounds = rect;
......
// commitAnimations,將beginAnimation之後的所有動畫提交並生成動畫
[UIView commitAnimations];
下面來羅列一下UIButton的基本屬性羅列
第一、UIButton的定義
復制代碼 代碼如下:
UIButton *button=[[UIButton buttonWithType:(UIButtonType);
能夠定義的button類型有以下6種,
復制代碼 代碼如下:
typedef enum {
UIButtonTypeCustom = 0, 自定義風格
UIButtonTypeRoundedRect, 圓角矩形
UIButtonTypeDetailDisclosure, 藍色小箭頭按鈕,主要做詳細說明用
UIButtonTypeInfoLight, 亮色感嘆號
UIButtonTypeInfoDark, 暗色感嘆號
UIButtonTypeContactAdd, 十字加號按鈕
}UIButtonType;
第二、設置frame
復制代碼 代碼如下:
button1.frame = CGRectMake(20, 20, 280, 40);
[button setFrame:CGRectMake(20,20,50,50)];
第三、button背景色
復制代碼 代碼如下:
button1.backgroundColor = [UIColor clearColor];
[button setBackgroundColor:[UIColor blueColor]];
第四、state狀態
forState: 這個參數的作用是定義按鈕的文字或圖片在何種狀態下才會顯現
復制代碼 代碼如下:
enum {
UIControlStateNormal = 0, 常規狀態顯現
UIControlStateHighlighted = 1 << 0, 高亮狀態顯現
UIControlStateDisabled = 1 << 1, 禁用的狀態才會顯現
UIControlStateSelected = 1 << 2, 選中狀態
UIControlStateApplication = 0x00FF0000, 當應用程序標志時
UIControlStateReserved = 0xFF000000 為內部框架預留,可以不管他
@property(nonatomic,getter=isEnabled)BOOL enabled; // default is YES. if NO, ignores touch events and subclasses may draw differently
@property(nonatomic,getter=isSelected)BOOL selected; // default is NO may be used by some subclasses or by application
@property(nonatomic,getter=isHighlighted)BOOL highlighted;
第五 、設置button填充圖片和背景圖片
復制代碼 代碼如下:
[buttonsetImage:[UIImageimageNamed:@"checkmarkControllerIcon"]forState:UIControlStateNormal];
[buttonsetBackgroundImage:[UIImageimageNamed:@"checkmarkControllerIcon"]forState:UIControlStateNormal];
第六、設置button標題和標題顏色
復制代碼 代碼如下:
[button1 setTitle:@"點擊" forState:UIControlStateNormal];
[buttonsetTitleColor:[UIColorredColor]forState:UIControlStateNormal];
第七、設置按鈕按下會發光
復制代碼 代碼如下:
button.showsTouchWhenHighlighted=NO;
第八、添加或刪除事件處理
復制代碼 代碼如下:
[button1 addTarget:self action:@selector(butClick:) forControlEvents:UIControlEventTouchUpInside];
[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];
第九、 設置按鈕內部圖片間距和標題間距
復制代碼 代碼如下:
UIEdgeInsets insets; // 設置按鈕內部圖片間距
insets.top = insets.bottom = insets.right = insets.left = 10;
bt.contentEdgeInsets = insets;
bt.titleEdgeInsets = insets; // 標題間距