1. 程式人生 > >IOS 在storyboard中建立按鈕,用程式碼控制按鈕

IOS 在storyboard中建立按鈕,用程式碼控制按鈕

1.在工程中找到Main.storyboard檔案。


2.在Xcode右下角點選一個圓形的table標籤,並找到Button控制元件。


3.點選Xcode右上角,有個雙圓環的按鈕。


4.按住ctrl建,並用滑鼠左鍵點選按鈕,拖向ViewController.h檔案中,放開手並輸入相應的名稱。



這個時候在ViewController中就會多出來一個,你自己建的按鈕資訊,並和Main.storyboard中的按鈕關聯。


5.我們就可以操作這個按鈕。我在ViewController.m中的viewDidLoad中,可以改變按鈕不同狀態下顯示的內容,

在不同事件下的,操作。設定按鈕的背景色,按鈕上的文字顏色,按鈕上的字型大小,

置按鈕變成圓角,設定按鈕邊框的大小,這個設定按鈕邊框的顏色,設定陰影的顏色,

設定陰影的大小,設定陰影的透明度,等

程式碼如下:

//
//  ViewController.m
//  TestUI1
//
//  Created by Lioncraft on 5/9/15.
//  Copyright (c) 2015 Lioncraft. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self.MyTestBtn setTitle:@"可以鬆手~" forState:UIControlStateHighlighted];//對於點選下,改變按鈕的文字內容
    //forState總共有6種狀態
//    UIControlStateNormal       = 0,
//    UIControlStateHighlighted  = 1 << 0,                  // used when UIControl isHighlighted is set
//    UIControlStateDisabled     = 1 << 1,
//    UIControlStateSelected     = 1 << 2,                  // flag usable by app (see below)
//    UIControlStateApplication  = 0x00FF0000,              // additional flags available for application use
//    UIControlStateReserved     = 0xFF000000               // flags reserved for internal framework use
    
    
    [self.MyTestBtn addTarget:self action:@selector(myTestBtn:) forControlEvents:UIControlEventTouchUpInside];
    /**
     *action:@selector 後面是要呼叫的函式
     
     forControlEvents總共有19種事件
     分別是:
     UIControlEventTouchDown           = 1 <<  0,      // on all touch downs
     UIControlEventTouchDownRepeat     = 1 <<  1,      // on multiple touchdowns (tap count > 1)
     UIControlEventTouchDragInside     = 1 <<  2,
     UIControlEventTouchDragOutside    = 1 <<  3,
     UIControlEventTouchDragEnter      = 1 <<  4,
     UIControlEventTouchDragExit       = 1 <<  5,
     UIControlEventTouchUpInside       = 1 <<  6,
     UIControlEventTouchUpOutside      = 1 <<  7,
     UIControlEventTouchCancel         = 1 <<  8,
     
     UIControlEventValueChanged        = 1 << 12,     // sliders, etc.
     
     UIControlEventEditingDidBegin     = 1 << 16,     // UITextField
     UIControlEventEditingChanged      = 1 << 17,
     UIControlEventEditingDidEnd       = 1 << 18,
     UIControlEventEditingDidEndOnExit = 1 << 19,     // 'return key' ending editing
     
     UIControlEventAllTouchEvents      = 0x00000FFF,  // for touch events
     UIControlEventAllEditingEvents    = 0x000F0000,  // for UITextField
     UIControlEventApplicationReserved = 0x0F000000,  // range available for application use
     UIControlEventSystemReserved      = 0xF0000000,  // range reserved for internal framework use
     UIControlEventAllEvents           = 0xFFFFFFFF

     
     **/
    
    //這個是設定按鈕的背景色
    self.MyTestBtn.backgroundColor = [UIColor colorWithRed:1.00f green:0.0f blue:0.82f alpha:1.00f];
    
    //這個是設定按鈕上文字的顏色
    [self.MyTestBtn setTitleColor:[UIColor colorWithRed:0.00f green:1.0f blue:0.02f alpha:1.00f] forState:UIControlStateNormal];
    //這個是設定按鈕上文字的大小
    self.MyTestBtn.font = [UIFont boldSystemFontOfSize:12.0f];
    
    //這個是設定按鈕變成圓角
    self.MyTestBtn.layer.cornerRadius = 10;
    //這個是設定按鈕邊框的大小
    self.MyTestBtn.layer.borderWidth = 3;
    //這個設定按鈕邊框的顏色
    self.MyTestBtn.layer.borderColor = [UIColor blackColor].CGColor;
    //這個是設定陰影的顏色
    self.MyTestBtn.layer.shadowColor = [UIColor yellowColor].CGColor;
    //這個是設定陰影的大小
    self.MyTestBtn.layer.shadowOffset = CGSizeMake(5, 2);
    //這個是設定陰影的透明度
    self.MyTestBtn.layer.shadowOpacity = 0.6;
    
    
    CGRect btnFrame = self.MyTestBtn.frame;
    //btnFrame.origin.y += 100;
    btnFrame.size.width = 100;
    btnFrame.size.height = 100;
    self.MyTestBtn.frame = btnFrame;
    
    
   
    
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
//這個是彈出對話方塊的函式
-(void)myTestBtn:(UIButton *)sender{
    
    UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"按鈕點選提示" delegate:self cancelButtonTitle:@"確定" otherButtonTitles: nil];
    
    [myAlertView show];
    
}

@end

6.最後,改變按鈕的大小和位置還有問題。

storyboard中設定了ui的大小和位置,在程式碼中修改ui大小和位置無響應。 

在storyboard中設定了一個label的大小和位置,想在程式碼中重新設定他的初始位置和大小,無響應。查詢後發現storyboard在viewdidload之後才會載入,所以程式碼中的frame設定會被重置。這裡是IOS新手,求大神解答如何解決這個問題(除了重新用程式碼編寫。。。OTZ)。