ios開發UI篇--UIButton

来源:https://www.cnblogs.com/jiuyi/archive/2019/03/06/10485365.html
-Advertisement-
Play Games

概述 UIButton 是執行自定義代碼以響應用戶交互的控制項。 UIButton 其實包含 UIImageView 和 UILabel 兩個控制項,UIButton 繼承於 UIControl,所以有 addtarget 監聽事件 屬性和方法 初始化Button不用alloc init方法,使用便利構 ...


概述

  • UIButton 是執行自定義代碼以響應用戶交互的控制項。
  • UIButton 其實包含 UIImageViewUILabel 兩個控制項,UIButton 繼承於 UIControl,所以有 addtarget 監聽事件

屬性和方法

初始化Button不用alloc init方法,使用便利構造器方法

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

UIButton的類型如下

UIButton類型說明
UIButtonTypeCustom 沒有按鈕樣式,一般設置該樣式,根據需要自定義
UIButtonTypeSystem 系統樣式按鈕,例如導航欄和工具欄中顯示的按鈕。
UIButtonTypeDetailDisclosure 詳細披露按鈕。
UIButtonTypeInfoLight 具有淺色背景的信息按鈕。
UIButtonTypeInfoDark 信息按鈕有一個黑暗的背景。
UIButtonTypeContactAdd 聯繫人添加按鈕。
UIButtonTypePlain 沒有模糊背景視圖的標準系統按鈕。
UIButtonTypeRoundedRect 已經廢棄,使用UIButtonTypeSystem代替

UIButton的狀態如下

UIButton的狀態說明
UIControlStateNormal 控制項的正常狀態或預設狀態 - 即已啟用但未選中或高亮顯示。
UIControlStateHighlighted 突出顯示的控制狀態。按鈕處於選中狀態時的狀態
UIControlStateDisabled 一個控制項的禁用狀態。
UIControlStateSelected 選擇一個控制項的狀態。
UIControlStateFocused 集中控制狀態。
UIControlStateApplication 額外的控制狀態標誌可用於應用程式使用。
UIControlStateReserved 控制狀態標誌保留給內部框架使用。

設置frame

[btn setFrame:CGRectMake(100, 100, 100, 30)];

設置某一狀態下的標題

[btn setTitle:@"測試" forState:(UIControlStateNormal)];

設置某一狀態下的標題顏色

[btn setTitleColor:[UIColor redColor] forState:(UIControlStateNormal)];

設置某一狀態下的陰影顏色

[btn setTitleShadowColor:[UIColor purpleColor] forState:UIControlStateNormal];

設置某一狀態下的背景顏色

[btn setBackgroundColor:[UIColor blackColor]];

設置標題字體大小

 btn.titleLabel.font = [UIFont systemFontOfSize:30];

設置某一狀態下的背景圖片(背景圖片顯示在其標題和前景圖像後面。)

[btn setBackgroundImage:[UIImage imageNamed:@"登錄logo"] forState:(UIControlStateNormal)];

設置某一狀態下的前景圖片

[btn setImage:[UIImage imageNamed:@"驗證碼"] forState:(UIControlStateNormal)];

設置標題內邊距

btn.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);   top, left, bottom, right;

 

設置圖片內邊距

btn.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0);

設置內容內邊距

btn.contentEdgeInsets = UIEdgeInsetsMake(10, -30, 10, 10);

標題的陰影改變時,按鈕是否高亮顯示。預設為NO

btn.reversesTitleShadowWhenHighlighted = YES;

按鈕高亮的情況下,圖像的顏色是否要加深一點。預設是YES

btn.adjustsImageWhenHighlighted = YES;

按鈕禁用的情況下,圖像的顏色是否要加深一點。預設是YES

btn.adjustsImageWhenDisabled = YES;

按下按鈕是否會發光 預設是NO

btn.showsTouchWhenHighlighted = NO;

返回button 某個狀態下的標題

- (nullable NSString *)titleForState:(UIControlState)state;

返回button 某個狀態下的標題顏色

- (nullable UIColor *)titleColorForState:(UIControlState)state;

返回button 某個狀態下的陰影標題顏色

- (nullable UIColor *)titleShadowColorForState:(UIControlState)state;

返回button 某個狀態下的圖片

- (nullable UIImage *)imageForState:(UIControlState)state;

返回button 某個狀態下的背景圖片

- (nullable UIImage *)backgroundImageForState:(UIControlState)state;

返回button 某個狀態下的富文本標題

- (nullable NSAttributedString *)attributedTitleForState:(UIControlState)state NS_AVAILABLE_IOS(6_0);

獲取按鈕當前標題

NSString *title = btn.currentTitle;

獲取按鈕當前標題顏色

UIColor *color = btn.currentTitleColor;

獲取按鈕當前陰影標題顏色

UIColor *shandowColor = btn.currentTitleShadowColor;

獲取按鈕當前按鈕內圖像

UIImage *image = btn.currentImage;

獲取按鈕當前標題背景圖片

UIImage *backgroundImage = btn.currentBackgroundImage;

獲取按鈕當前標題富文本

NSAttributedString *aString = btn.currentAttributedTitle;

指定背景邊界

- (CGRect)backgroundRectForBounds:(CGRect)bounds;

指定內容邊界

- (CGRect)contentRectForBounds:(CGRect)bounds;

指定標題邊界

- (CGRect)titleRectForContentRect:(CGRect)contentRect;

指定圖片邊界

- (CGRect)imageRectForContentRect:(CGRect)contentRect;

給按鈕添加點擊事件

[btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];

UIButton點擊事件如下

UIButton點擊事件說明
UIControlEventTouchDown 單點觸摸按下事件:用戶點觸屏幕,或者又有新手指落下的時候。
UIControlEventTouchDownRepeat 多點觸摸按下事件,點觸計數大於1:用戶按下第二、三、或第四根手指的時候。
UIControlEventTouchDragInside 當一次觸摸在控制項視窗內拖動時。
UIControlEventTouchDragOutside 當一次觸摸在控制項視窗之外拖動時。
UIControlEventTouchDragEnter 當一次觸摸從控制項視窗之外拖動到內部時
UIControlEventTouchDragExit 當一次觸摸從控制項視窗內部拖動到外部時。
UIControlEventTouchUpInside 所有在控制項之內觸摸抬起事件
UIControlEventTouchUpOutside 所有在控制項之外觸摸抬起事件(點觸必須開始與控制項內部才會發送通知)。
UIControlEventTouchCancel 所有觸摸取消事件,即一次觸摸因為放上了太多手指而被取消,或者被上鎖或者電話呼叫打斷。
UIControlEventValueChanged 當控制項的值發生改變時,發送通知。用於滑塊、分段控制項、以及其他取值的控制項。你可以配置滑塊控制項何時發送通知,在滑塊被放下時發送,或者在被拖動時發送。
UIControlEventEditingDidBegin 當文本控制項中開始編輯時發送通知
UIControlEventEditingChanged 當文本控制項中的文本被改變時發送通知。
UIControlEventEditingDidEnd 當文本控制項中編輯結束時發送通知。
UIControlEventEditingDidEndOnExit 當文本控制項內通過按下回車鍵(或等價行為)結束編輯時,發送通知。
UIControlEventAllTouchEvents 通知所有觸摸事件
UIControlEventAllEditingEvents 通知所有關於文本編輯的事件。
UIControlEventApplicationReserved range available for application use
UIControlEventSystemReserved range reserved for internal framework use
UIControlEventAllEvents 通知所有事件

 


作者:coder小鵬

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、 MySQL+MyCat分庫分表 1 MyCat簡介 java編寫的資料庫中間件 Mycat運行環境需要JDK. Mycat是中間件.運行在代碼應用和MySQL資料庫之間的應用. 前身 : corba. 是阿裡開發的資料庫中間件.實現MySQL資料庫分庫分表集群管理的中間件.曾經出現過重大事故. ...
  • 1、創建一個maven工程 2、POM文件 ...
  • 在當前互聯網流行架構下,Redis、MongoDB等非關係型資料庫(NoSQL)正逐漸搶占更多的視野,然而正如其釋義(Not Only SQL)所說,NoSQL在當前仍然只作為傳統關係型資料庫的補充。當前的的大部分持久化場景下,關係型資料庫仍然占據不可替代的地位。因此,能夠設計出規範合理的關係數據表 ...
  • 需要一些前提條件: 1、對方的主機能被連接(如在同一區域網內) 2、需要知道對方資料庫IP、埠號、服務名 3、需要知道對方提供的管理資料庫的用戶名及密碼 連接方法: 1、在本地的oracle安裝目錄,找到tnsnames.ora文件,一般在~\oracle\product\10.2.0\db_1\ ...
  • 協同辦公衍生出的需求 1.業務需求 1.1.流程 先說業務流程: 現在辦公基本上都是諸如 之類的線上office來協同辦公,然後所有的線上文檔會有一份本地文件用來存儲和數據分析 1.2.需求 需求是這樣的: 希望企業系統和文職人員以及分析部能夠共同管理這些Excel表格,但不想耗費資源去開發OA之類 ...
  • 1,先到Oracle站點下載Instant Client : http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html 依據你的操作系統選擇不同的Instant Client版本號 下載 ...
  • [20190306]奇怪的查詢結果.txt--//鏈接http://www.itpub.net/thread-2108588-1-1.html提到一個非常古怪的問題,我自己重覆測試看看:1.環境:SCOTT@book> @ ver1PORT_STRING VERSION BANNER x86_64/ ...
  • 概述 UIStepper用於增加或減少值的控制項。 屬性和方法 初始化方法 UIStepper *stepper = [[UIStepper alloc] initWithFrame:CGRectMake(100, 100, 100, 30)]; 設置是否為連續狀態 [stepper setConti ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...