日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1-2基础控件

發布時間:2023/12/18 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1-2基础控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是UIImageView
  UIKit框架提供了非常多的UI控件,但并不是每一個都很常用,有些控件可能1年內都用不上,有些控件天天用,比如UIButton、UILabel、UIImageView、UITableView等等
  UIImageView極其常用,功能比較專一:顯示圖片


什么是UILabel
  UILabel極其常用,功能比較專一:顯示文字
  

?

什么是按鈕
  還有一個非常重要的UI控件---UIButton,俗稱“按鈕”,一般情況下,點擊某個控件后,會做出相應反應的都是按鈕
  按鈕的功能比較多,既能顯示文字,又能顯示圖片,還能隨時調整內部圖片和文字的位置

  

?

UIButton的狀態

  normal(普通狀態)
  默認情況(Default)
  對應的枚舉常量:UIControlStateNormal

  highlighted(高亮狀態)
  按鈕被按下去的時候(手指還未松開)
  對應的枚舉常量:UIControlStateHighlighted

  disabled(失效狀態,不可用狀態)
  如果enabled屬性為NO,就是處于disable狀態,代表按鈕不可以被點擊
  對應的枚舉常量:UIControlStateDisabled

設置按鈕的背景圖片
  設置按鈕在不同狀態下的背景圖片(為了保證高亮狀態下的圖片正常顯示,必須設置按鈕的typecustom
  

按鈕的樣式
  實際上,UIButton自帶了很多種不同的樣式
  
  在用代碼創建按鈕的同時指定按鈕樣式
  UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
  UIButtonTypeCustom:無類型,按鈕的內容需要自定義
  UIButtonTypeDetailDisclosure:
  UIButtonTypeInfoLight:
  UIButtonTypeInfoDark:
  UIButtonTypeContactAdd:

UIButton的常見設置
 

 - (void)setTitle:(NSString *)title forState:(UIControlState)state;設置按鈕的文字- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;設置按鈕的文字顏色- (void)setImage:(UIImage *)image forState:(UIControlState)state;設置按鈕內部的小圖片- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;//設置按鈕的背景圖片 btn.titleLabel.font = [UIFont systemFontOfSize:13];// 設置按鈕的文字字體(需要拿到按鈕內部的label來設置)- (NSString *)titleForState:(UIControlState)state;//獲得按鈕的文字- (UIColor *)titleColorForState:(UIControlState)state;//獲得按鈕的文字顏色- (UIImage *)imageForState:(UIControlState)state;//獲得按鈕內部的小圖片- (UIImage *)backgroundImageForState:(UIControlState)state;//獲得按鈕的背景圖片

?



Storyboard到代碼的轉換
  

 

 // 創建一個自定義的按鈕UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];// 默認狀態的背景[btn setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];// 默認狀態的文字[btn setTitle:@"點我啊" forState:UIControlStateNormal];// 默認狀態的文字顏色[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

?

九宮格計算思路


?

HUD/指示器/蒙版/遮蓋

//顯示HUDNSString *text = nil;if(self.removeBtn.enabled == NO){text = @"表示已經刪光了";}elseif(self.addBtn.enabled == NO){text = @"表示已經添加滿了";}// if(text == nil) return;if(text){self.hud.text = text;self.hud.alpha = 1;dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(1.5*NSEC_PER_SEC)),dispatch_get_main_queue(),^{self.hud.alpha = 0.0;});}

?

?

什么是Plist文件
  直接將數據直接寫在代碼里面,不是一種合理的做法。如果數據經常改,就要經常翻開對應的代碼進行修改,造成代碼擴展性低
  因此,可以考慮將經常變的數據放在文件中進行存儲,程序啟動后從文件中讀取最新的數據。如果要變動數據,直接修改數據文件即可,不用修改代碼
  一般可以使用屬性列表文件存儲NSArray或者NSDictionary之類的數據,這種“屬性列表文件”的擴展名plist,因此也稱為“plist文件
創建Plist文件
  

?

解析Plist文件
  接下來通過代碼來解析Plist文件中的數據
  獲得Plist文件的全路徑
  NSBundle *bundle = [NSBundle mainBundle];
  NSString *path = [bundle pathForResource:@"shops" ofType:@"plist"];

  加載plist文件
  _shops = [NSArray arrayWithContentsOfFile:path];

Plist文件的解析過程
  

Plist的使用注意
  plist的文件名不能叫做“info”、“Info”之類的
  添加plist等文件資源的時候,一定要勾選下面的選項
  

用模型取代字典的好處
  使用字典的壞處:一般情況下,設置數據和取出數據都使用“字符串類型的key”,編寫這些key時,編輯器沒有智能提示,需要手敲
  dict[@"name"] = @"Jack";
  NSString *name = dict[@"name"];
  手敲字符串key,key容易寫錯, Key如果寫錯了,編譯器不會有任何警告和報錯,造成設錯數據或者取錯數據 

  使用模型的好處:所謂模型,其實就是數據模型,專門用來存放數據的對象,用它來表示數據會更加專業
  模型設置數據和取出數據都是通過它的屬性,屬性名如果寫錯了,編譯器會馬上報錯,因此,保證了數據的正確性
  使用模型訪問屬性時,編譯器會提供一系列的提示,提高編碼效率
  app.name = @"Jack";
  NSString *name = app.name;

字典轉模型
  字典轉模型的過程最好封裝在模型內部

  模型應該提供一個可以傳入字典參數的構造方法
  - (instancetype)initWithDict:(NSDictionary *)dict;
  + (instancetype)xxxWithDict:(NSDictionary *)dict;


instancetype
  instancetype在類型表示上,跟id一樣,可以表示任何對象類型
  instancetype只能用在返回值類型上,不能像id一樣用在參數類型上
  instancetype比id多一個好處:編譯器會檢測instancetype的真實類型

類前綴
  使用Objective-C開發iOS程序時,最好在每個類名前面加一個前綴,用來標識這個類的“老家”在哪

  目的是防止N個人開發了一樣的類,沖突了
  比如Jake Will、Kate Room在同一個項目中都各自開發了個Button類,這樣的程序是不能運行起來的
  解決方案:Jake Will的類名叫做JWButton,Kate Room的類名叫做KRButton

字典轉模型的過程

?



view的封裝
  
  如果一個view內部的子控件比較多,一般會考慮自定義一個view,把它內部子控件的創建屏蔽起來,不讓外界關心
  外界可以傳入對應的模型數據給view,view拿到模型數據后給內部的子控件設置對應的數據

  封裝控件的基本步驟
    在initWithFrame:方法中添加子控件,提供便利構造方法
    在layoutSubviews方法中設置子控件的frame(一定要調用superlayoutSubviews
    增加模型屬性,在模型屬性set方法中設置數據到子控件上

簡單的MVC

?

Xib和storyboard對比

? 共同點:
  都用來描述軟件界面
  都用Interface Builder工具來編輯
  本質都是轉換成代碼去創建控件

? 不同點
  Xib是輕量級的,用來描述局部的UI界面
  Storyboard是重量級的,用來描述整個軟件的多個界面,并且能展示多個界面之間的跳轉關系

Xib的加載

//方法1 NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]//方法2 UINib *nib = [UINib nibWithNibName:@"xib文件名" bundle:nil]; NSArray *views = [nib instantiateWithOwner:nil options:nil];

?

使用xib自定義view的步驟
  新建自定義控件類
  
  

  新建xib文件(文件名建議和view的類名一致)
  

?  

  修改xib中view的類名
  

  封裝xib的加載過程
  

  

  在類擴展中增加子控件屬性,然后關聯子xib中子控件

    @interface XMGShopView()

      @property(weak,nonatomic)IBOutlet UIImageView *iconView;

      @property(weak,nonatomic)IBOutlet UIlabel *nameLabel;

    @end

  增加模型屬性,在模型屬性set方法中設置數據到子控件上
  

?

注意點
  一個控件有2種創建方式
  通過代碼創建,初始化時一定會調用initWithFrame:方法

  通過xib\storyboard創建
  初始化時不會調用initWithFrame:方法,只會調用initWithCoder:方法
  初始化完畢后會調用awakeFromNib方法

  有時候希望在控件初始化時做一些初始化操作,比如添加子控件、設置基本屬性
  這時需要根據控件的創建方式,來選擇在initWithFrame:、initWithCoder:、awakeFromNib的哪個方法中操作

UIImage

  一個UIImage對象代表一張圖片,一般通過imageNamed:方法就可以通過文件名加載項目中的圖片

  UIImage *image = [UIImage imageNamed:@"lufy"];

UILabel的基本設置
  要想讓UILabel自動換行,設置Lines為0即可
  

  讓UILabel的文字居中顯示

  

@property(nonatomic,copy) NSString *text; //顯示的文字 @property(nonatomic,retain) UIFont *font; //字體 @property(nonatomic,retain) UIColor *textColor; //文字顏色 @property(nonatomic) NSTextAlignment textAlignment; //對齊模式(比如左對齊、居中對齊、右對齊)

?

UIFont
UIFont代表字體,常見創建方法有以下幾個:

+ (UIFont *)systemFontOfSize:(CGFloat)fontSize; 系統默認字體 + (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize; 粗體 + (UIFont *)italicSystemFontOfSize:(CGFloat)fontSize; 斜體

?



UIButton、UIImageView、UILabel的選擇

特點
  UIButton
  既能顯示文字,又能顯示圖片(能顯示2張圖片,背景圖片、內容圖片)
  長按高亮的時候可以切換圖片\文字
  直接通過addTarget...方法監聽點擊

  UIImageView
  能顯示圖片,不能直接通過addTarget...方法監聽點擊

  UILabel
  能顯示文字,不能直接通過addTarget...方法監聽點擊

選擇
  僅僅是顯示數據,不需要點擊
  建議選擇UIImageView、UILabel

  不僅顯示數據,還需要監聽點擊
  建議選擇UIButton
  其實UIImageView、UILabel也可以通過手勢識別器來監聽(后面課程會學)

  長按控件后,會改變顯示的內容
  不用考慮了,選擇UIButton(因為UIButton有highlighted這種狀態)

  同時顯示2張圖片:背景圖片、內容圖片
  不用考慮了,選擇UIButton



常用的Xcode插件
Xcode插件大全
  http://www.cocoachina.com/industry/20130918/7022.html

必備
  文檔注釋生成:https://github.com/onevcat/VVDocumenter-Xcode
  自動檢索圖片名:https://github.com/ksuther/KSImageNamed-Xcode
  取色:https://github.com/omz/ColorSense-for-Xcode
  插件管理工具:https://github.com/mneorr/Alcatraz

???? 移除插件(可以使用上面提到的插件管理工具Alcatraz)
  到~/Library/Application Support/Developer/Shared/Xcode/Plug-ins文件夾中刪除

???? 插件失效修復:http://joeshang.github.io/2015/04/10/fix-xcode-upgrade-plugin-invalid/




如何獲得APP內部資源

  安裝一個iTools(百度一下就有)

  用USB連接設備,打開iTools

  

?

轉載于:https://www.cnblogs.com/laugh/p/6364607.html

總結

以上是生活随笔為你收集整理的1-2基础控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。