中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iPhone How-to:如何更改UISwitch的提示文本

發布時間:2020-06-15 09:27:02 來源:網絡 閱讀:7643 作者:benjielin 欄目:開發技術

    UISwitch(如下圖)可以認為是其他UI庫中Checkbox的替代品,但所呈現的內容更豐富,包括文本、顏色、動畫。默認情況下,UISwitch的提示文本分別是ON和OFF,并很好地支持國際化以在不同區域語言下顯示不同的文字,但由于無法定制導致在有些應用場景中顯得不是很準確。比如在詢問是否同意時希望提示文本可以是YES和NO,判斷是否正確則應該是TRUE和FALSE等等。為此需要對UISwitch進行擴展。考慮到繼承會導致控件繼承關系太深,因此采用了Objective C的特性之一的Category。

iPhone How-to:如何更改UISwitch的提示文本

 

實現的主要原理就是找到UISwitch中用于顯示文本的UILabel控件并打標記以便在需要設定文本的時候訪問到相應控件。

Category聲明:

  1. @interface UISwitch (CustomText)  
  2.  
  3. + (UISwitch *) switchWithLeftText: (NSString *) tag1 andRight: (NSString *) tag2;  
  4. @property (nonatomic, readonly) UILabel *label1;  
  5. @property (nonatomic, readonly) UILabel *label2;  
  6.  
  7. @end  

Category實現:

  1. #define TAG_OFFSET      900  
  2.  
  3. @implementation UISwitch (CustomText)  
  4. - (void) locateAndTagAndTag: (UIView *) aView withCount:(int *) count  
  5. {  
  6.         for (UIView *subview in [aView subviews])  
  7.         {  
  8.                 if ([subview isKindOfClass:[UILabel class]])  
  9.                 {  
  10.                         *count += 1;  
  11.                         [subview setTag:(TAG_OFFSET + *count)];  
  12.                 }  
  13.                 else  
  14.                         [self locatelocateAndTagAndTag:subview withCount:count];  
  15.         }  
  16. }  
  17.  
  18. - (UILabel *) label1  
  19. {  
  20.         return (UILabel *) [self viewWithTag:TAG_OFFSET + 1];  
  21. }  
  22.  
  23. - (UILabel *) label2  
  24. {  
  25.         return (UILabel *) [self viewWithTag:TAG_OFFSET + 2];  
  26. }  
  27.  
  28. + (UISwitch *) switchWithLeftText: (NSString *) tag1 andRight: (NSString *) tag2  
  29. {  
  30.         UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];  
  31.         int labelCount = 0;  
  32.         [switchView locateAndTag:switchView withCount:&labelCount];  
  33.         if (labelCount == 2)  
  34.         {  
  35.                 [switchView.label1 setText:tag1];  
  36.                 [switchView.label2 setText:tag2];  
  37.         }  
  38.         return [switchView autorelease];  
  39. }  
  40.  
  41. @end 

在實際應用中,實例化定制的UISwitch的代碼如下:

  1. UISwitch *switch = [UISwitch switchWithLeftText:@"YES" andRight:@"NO"]; 

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

惠州市| 都安| 获嘉县| 马山县| 清远市| 酉阳| 元氏县| 罗城| 曲周县| 尤溪县| 三穗县| 乌鲁木齐县| 台安县| 成武县| 信丰县| 杂多县| 遵义市| 郁南县| 仪征市| 泽普县| 夏邑县| 大邑县| 靖西县| 崇左市| 昌图县| 公安县| 会泽县| 册亨县| 台州市| 邵阳县| 碌曲县| 工布江达县| 龙岩市| 桂阳县| 崇义县| 靖江市| 怀宁县| 沙河市| 江华| 黔江区| 海口市|