1. 程式人生 > >UIActionSheet 字型顏色設定

UIActionSheet 字型顏色設定

在我們app的開發過程經常會遇到各種彈框,提示框的需求,然而系統的自帶的字型顏色是如此的ugly。那我們今天就討論一下,在ios7.0和8.0上面如何修改彈框的的title的字型顏色。
  • 首先在iOS7.0修改UIActionSheet title的字型是很簡單的,設定代理,在willPresentActionSheet方法中修改。程式碼如下:

    - (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
      for (UIView *subViwe in actionSheet.subviews) {
          if ([subViwe isKindOfClass:[UILabel
    class]]) { UILabel *label = (UILabel *)subViwe; label.font = [UIFont systemFontOfSize:16]; label.frame = CGRectMake(CGRectGetMinX(label.frame), CGRectGetMinY(label.frame), CGRectGetWidth(label.frame), CGRectGetHeight(label.frame)+20); } if ([subViwe isKindOfClass:[UIButton
    class]]) { UIButton *button = (UIButton*)subViwe; if ([button.titleLabel.text isEqualToString:@"確定"]) { [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; } else { [button setTitleColor:[UIColor greenColor] forState:UIControlStateNormal
    ]; } button.titleLabel.font = [UIFont systemFontOfSize:18]; } } }

當然自從xcode在系統8.0採用了UIAlertController過後,7.0的方法就沒有用了,那麼在iOS8.0過後我們怎麼修改title的字型顏色呢?在這裡推薦一款很好用的第三方裡脊串的MMPopupView裡面的控制元件我覺得還是很好用的!那我就不想用第三方,只想在系統方法上修改怎麼辦呢。很簡單,下面貼上我的程式碼!也就幾段程式碼,我就不上傳我的github了。

  • iOS8.0 系統UIAlertController建立actionSheet的方法

      UIAlertController * alertController = [UIAlertController alertControllerWithTitle: nil message: nil preferredStyle:UIAlertControllerStyleActionSheet];
      [alertController addAction: [UIAlertAction actionWithTitle: @"USD($)" style: UIAlertActionStyleDefault handler:^(UIAlertAction *action) {}]];
      [alertController addAction: [UIAlertAction actionWithTitle:@"RMB(¥)" style: UIAlertActionStyleDefault handler:^(UIAlertAction *action){}]];
      [alertController addAction: [UIAlertAction actionWithTitle: @"取消" style: UIAlertActionStyleCancel handler:nil]];
      [self presentViewController: alertController animated: YES completion: nil];
  • 首先通過runtime獲取對應的內部屬性

    包含標頭檔案#import <objc/runtime.h>
      unsigned int count = 0;
      Ivar *ivars = class_copyIvarList([UIAlertAction class], &count);
      for (int i = 0; i<count; i++) {
          // 取出成員變數
    //        Ivar ivar = *(ivars + i);
          Ivar ivar = ivars[i];
          // 列印成員變數名字
          NSLog(@"%s------%s", ivar_getName(ivar),ivar_getTypeEncoding(ivar));
      }
  • 獲取到對應的屬性我們就可以修改系統內部的預設值了

    // 取消按鈕
      -(void)addCancelActionTarget:(UIAlertController*)alertController title:(NSString *)title
    {
      UIAlertAction *action = [UIAlertAction actionWithTitle:title style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
    
      }];
      [action setValue:[UIColor purpleColor] forKey:@"_titleTextColor"];
      [alertController addAction:action];
    }
    //新增對應的title    這個方法也可以傳進一個數組的titles  我只傳一個是為了方便實現每個title的對應的響應事件不同的需求不同的方法
    - (void)addActionTarget:(UIAlertController *)alertController title:(NSString *)title color:(UIColor *)color action:(void(^)(UIAlertAction *action))actionTarget
    {
      UIAlertAction *action = [UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
          actionTarget(action);
      }];
      [action setValue:color forKey:@"_titleTextColor"];
      [alertController addAction:action];
    }
  • 最後具體的實現程式碼就是這樣的 大家可以複製程式碼自己去試試

     UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
     [self addActionTarget:alert title:@"星期一" color: [UIColor redColor] action:^(UIAlertAction *action) {
         NSLog(@"nicaicai");
     }];
     [self addActionTarget:alert title:@"星期二" color: [UIColor redColor] action:^(UIAlertAction *action) {
         NSLog(@"nicaicai");
     }];
    
     [self addActionTarget:alert title:@"星期三" color: [UIColor redColor] action:^(UIAlertAction *action) {
         NSLog(@"nicaicai");
     }];
    
     [self addActionTarget:alert title:@"星期四" color: [UIColor redColor] action:^(UIAlertAction *action) {
         NSLog(@"nicaicai");
     }];
     [self addCancelActionTarget:alert title:@"取消"];
     [self presentViewController:alert animated:YES completion:nil];

    實現效果如下

原:http://www.jianshu.com/p/1c052c761a15

相關推薦

UIActionSheet 字型顏色設定

在我們app的開發過程經常會遇到各種彈框,提示框的需求,然而系統的自帶的字型顏色是如此的ugly。那我們今天就討論一下,在ios7.0和8.0上面如何修改彈框的的title的字型顏色。 首先在iOS7.0修改UIActionSheet title的字型是很簡單的,設定代理,在willPresentAct

IE8中的input設定為disabled時,字型顏色設定問題

關於Input不能修改,設定屬性可以為disabled或者readonly 但是,如果設定為disabled,關於字型顏色的設定則不再有效,disabled對顏色的設定免疫,因為顏色太淡,使用者體驗差,所以用readonly,但是readonly會出現游標的閃爍問題,需要設定屬性: $('i

android 狀態列字型顏色設定 黑色 anctivity+dialog

package com.bufanbudao.kaikeba.utils; import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import andr

ios 狀態列statusBar的背景顏色字型顏色設定

假如我想讓狀態列顏色設定成紅色,字型仍為黑色,可以在需要顯示的那一頁進行如下設定:(最好寫在viewWillAppear裡面) //設定狀態列顏色 - (void)setStatusBarBackgroundColor:(UIColor *)color { UIView *

Linux終端介面的字型顏色設定

目錄 說明  PS1  顏色語法  儲存設定 說明 在網上找了好多資料都不是很詳細,要不就是語法有錯誤。  所以弄了好久才整明白了,寫下來方便後面的人學習。  本人Linux虛擬機器版本為CentOS 6.5其他的版本的可能又細微區別哈。 PS1 PS1是Linux終端使用者的一個環境變數

設定UIButton的文字顯示位置、字型的大小、字型顏色、加粗(特別是字型顏色設定的那句程式碼。。挺有用)

btn.frame = CGRectMake(x, y, width, height);[btn setTitle: @"search" forState: UIControlStateNormal];  // 設定按鈕上的自體的大小 //[btn setFont: [UI

Jupyter Notebook 中markdown編輯器的字型顏色設定

換行: 方法1: 連續兩個以上空格+回車方法2:使用html語言換行標籤:<br> 首行縮排兩個字元:(每個表示一個空格,連續使用兩個即可) &ensp; 半形的空格&emsp; 全形的空格 字型、字號與顏色:   Jupyter Note

android TextView的字型顏色設定的多種方法

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"

android TextView部分字型顏色設定以及圖文混排

Drawable drawable = context.getResources().getDrawable(R.drawable.icon_wecircle_up); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getInt

對話方塊控制元件背景、字型顏色設定

1、控制元件背景顏色每個控制元件和對話方塊本身在宣示之前會向其父對話方塊傳送WM_CTLCOLOR訊息。如果你在派生類對話方塊對WM_CTLCOLOR訊息進行對映,就可以設定控制元件的顏色,以及某些控制元件的背景顏色和字型的顏色。 HBRUSH CMyDlg::OnCtl

idea中字型顏色設定成類似eclipse的方案

由於本人一開始使用的是eclipse,轉為idea後為了習慣這個新的編輯器,所以將其字型顏色設定的與eclipse類似,以便感覺是在使用eclipse,後來就習慣這個風格了,現在做一下筆記,順便分享給有需要的人: 設定idea中檔案狀態顏色路徑是: Preferences

android中 字型顏色設定

1、在Android中經常看到設定的顏色為八位的十六進位制的顏色值,例如: 1 2 3 public static final class color { public static final int lightblue=0x7f040000; }

純css改變input的游標顏色字型顏色不變(設定游標顏色字型顏色不同)

使用input輸入框時,預設游標顏色是和字型顏色相同的,只需css設定color屬性就可以同時改變游標和字型顏色 但有時的需求是游標和字型顏色不一樣,網上的caret方法經測試chrome並不管用,所以,程式碼如下 <!DOCTYPE html> <htm

編輯框中字型修改和大小字號,顏色設定

首先要了解 CFont類,它 封裝了一個 Windows 圖形裝置介面( GDI)字型,併為操作字型提供了成員函式 。使用CreatFontW函式來建立字型。函式的原型如下:BOOL CreateFont( int nHeight, // 字型高度:0為預設高度,非0絕對值為字型高度in

Centos 7.4設定終端字型顏色及大小的問題

        虛擬機器裡centos 的字型實在太小,螢幕解析度也太小,看著很難受。     一開始在根目錄下面的boot/grub2/grub.cfg 找到linux16 /vmlinuz-3.10

textarea是可以設定字型顏色

引自:http://www.coderanch.com/t/436752/GUI/java/change-textArea-font-color   Hi, How can I do dynamically change of font color in textArea ?

Android TextView動態設定字型顏色選擇器

Android 在用字型顏色選擇器時: 一種在xml檔案中直接設定textColor通常會用這種情況,這種情況字型顏色Selector挺好用的: android:textColor="@color/selector_delete_color" 然而,在程式碼中設定字型顏色選擇器

設定Swing控制元件不可用(即setEnabled(false))時的字型顏色

使用Swing做介面顯示,部分文字顯示框要求不能修改,卻又沒有 readOnly 屬性,只能設定 setEnabled(false) 來實現。可是,setEnabled(false) 後,字型顏色就變了,字看不清了。 這個時候,我們可以使用 setDisabledTextColor(Col

Python中輸出字型顏色設定

1.實現過程 終端的字元顏色是用轉義序列控制的,是文字模式下的系統顯示功能,和具體的語言無關。控制字元顏色的轉義序列是以ESC開頭,即用\033來完成  2.書寫過程 開頭部分:  \033[顯示方式;前景色;背景色m 結尾部分:  \033[0m

vi/vim 設定字型顏色設定

通過hi命令來修改註釋的顏色,使用方法: 設定關鍵字為藍色非粗體 :hi Identifier ctermfg =blue cterm=none (bold 就設定成粗體) 1、vi ~/.vimrc 加入如下內容: hi Comment ctermfg =bl