UI基礎(chǔ)

  • UILable
    • numberofLines屬性設(shè)置文字的行數(shù),0為自動(dòng)計(jì)算
    • 當(dāng)文字行數(shù)超過(guò)寬度時(shí)會(huì)自動(dòng)換行 超過(guò)高度時(shí)會(huì)顯示省略號(hào)
  • UIButton
    • 該對(duì)象初始化需要使用靜態(tài)方法UIButton* btn = [UIButton buttonWidthType:$BtnType];
    • 設(shè)置title需要用setTitle forState 例:[btn setTitle:@"click me" forState:UIControlStateNormal];
    • 設(shè)置圓角
    //設(shè)置超出圖形范圍剪裁
    btn.clipToBounds = YES;
    //設(shè)置圖形布局的角半徑為10;
    btn.layer.cornerRadius = 10;
    
    • 綁定事件函數(shù)需要用到選擇器@selector()
    //例子:
     [btn addTarget:self action:@selector(sayHey:) forControlEvents:UIControlEventTouchDown];
     - (void) sayHey:(UIButton*)btn{
      NSLog(@"%@",btn);
      NSLog(@"hey");
      }
    
    • 定時(shí)器
    //創(chuàng)建定時(shí)器
    [NSTimer scheduledTimerWithTimeInterval:2 repeats:NO block:^(NSTimer * _Nonnull timer) {
          NSLog(@"begin");
      }];
    //也可以用@selector方式去創(chuàng)建 創(chuàng)建完即運(yùn)行 不需要手動(dòng)調(diào)用
    //`注`: NSTimeInterval(第一個(gè)參數(shù))是一個(gè)以秒為單位的間隔.
    
    • UISwitch
      • 使用addTarget來(lái)綁定函數(shù) 用isOn來(lái)判斷控件狀態(tài)
   UISwitch* sw = [[UISwitch alloc] initWithFrame:CGRectMake(30, 50, 200, 100)];
  [sw addTarget:self action:@selector(pressTarget:) forControlEvents:UIControlEventValueChanged];
  - (void) pressTarget:(UISwitch*)sw{

   NSLog(@"%i",sw.isOn);
   }
   ```
 * UISlider(滑塊)
 ```objectivec
 UISlider* us = [[UISlider alloc] initWithFrame:CGRectMake(30, 50, 200, 200)];
  us.value = 20;
  us.maximumValue = 200;
  us.minimumValue = 10;
  us.tintColor = [UIColor greenColor];
  //圓圈樣式
  us.thumbTintColor = [UIColor purpleColor];
  [us addTarget:self action:@selector(pressTarget:) forControlEvents:UIControlEventValueChanged];
  [view addSubview:us];
  - (void) pressTarget:(UISlider*)us{

   NSLog(@"%.0f",us.value);
}
  • 步進(jìn)器(UIStepper)
- (instancetype)init{
 mainPage* view = [super init];
 UIStepper* step = [[UIStepper alloc] initWithFrame:CGRectMake(30, 50, 200, 200)];
 step.minimumValue = 10;
 step.maximumValue = 100;
 step.stepValue = 10;
 step.value = 8;
 UILabel* ul = [[UILabel alloc] initWithFrame:CGRectMake(80, 50, 200, 200)];
 ul.text = [NSString stringWithFormat:@"%i",8];
 ul.tag = 200;
 [step addTarget:self action:@selector(pressTarget:) forControlEvents:UIControlEventValueChanged];
 [view addSubview:step];
 [view addSubview:ul];
 return view;
 }
 - (void) pressTarget:(UIStepper*)us{
 UILabel* ul = [self viewWithTag:200];
 ul.text =[NSString stringWithFormat:@"%.0f",us.value];
 }
  • UISegementControl(分欄控制器)
- (instancetype)init{
 mainPage* view = [super init];
 UISegmentedControl* usc = [[UISegmentedControl alloc] initWithFrame:CGRectMake(30, 50, 300,50)];
 [usc insertSegmentWithTitle:@"first" atIndex:0 animated:YES];
 [usc insertSegmentWithTitle:@"second" atIndex:1 animated:YES];
 [usc addTarget:self action:@selector(pressTarget:) forControlEvents:UIControlEventValueChanged];
 [view addSubview:usc];
 return view;
 }
 - (void) pressTarget:(UISegmentedControl*)usc{
 NSLog(@"%li",usc.selectedSegmentIndex);
 }
  • 等待指示器(loading效果)
UIActivityIndicatorView* ac =  [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(30, 120, 300,50)];
//必須設(shè)置一種風(fēng)格樣式
ac.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[ac startAnimating];
//[ac stopAnimating]; 關(guān)閉加載動(dòng)畫
  • UITextFiled

//textfiled樣式
tx.borderStyle = UITextBorderStyleRoundedRect;
tx.keyboardType = UIKeyboardTypeNumberPad;
//    開啟密碼保護(hù)
tx.secureTextEntry = YES;
//回收鍵盤
//viewController.m 點(diǎn)擊空白處回收鍵盤
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
 UITextField* tx = [self.view viewWithTag:201];
 [tx resignFirstResponder];
}

//監(jiān)聽事件(需要實(shí)現(xiàn)UITextFieldDelegate協(xié)議)
@interface mainPage : UIView<UITextFieldDelegate>
//給控件指定代理類
tx.delegate = self;
//選擇需要監(jiān)聽的事件進(jìn)行實(shí)現(xiàn)
- (void)textFieldDidBeginEditing:(UITextField *)textField{
 NSLog(@"%@",@"開始編輯");
}
  • UIScrollView 滾動(dòng)視圖

 mainPage* view = [super init];
 UIScrollView* usv = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 //設(shè)置內(nèi)容畫布大小
 usv.contentSize = CGSizeMake(320*5, 570);
 //創(chuàng)建子視圖加入到滾動(dòng)視圖中
 UIView* uv = [[UIView alloc] initWithFrame:CGRectMake(320, 0, 320, 570)];
 uv.backgroundColor = [UIColor greenColor];
 [usv addSubview:uv];
 [view addSubview:usv];

  • UIImage
UIImage* imgData = [UIImage imageNamed:@"test1.jpg"];
 UIImageView* img = [[UIImageView alloc] initWithImage:imgData];
  • UIGestureRecognizer(手勢(shì)基礎(chǔ)事件)
//開啟事件響應(yīng)默認(rèn)是NO
img.userInteractionEnabled = YES;
UITapGestureRecognizer* gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAct:)];
//    幾次點(diǎn)擊時(shí)觸發(fā)
gesture.numberOfTapsRequired = 1;
//    需要幾個(gè)手指點(diǎn)擊觸發(fā)
gesture.numberOfTouchesRequired = 1;
//    給視圖添加響應(yīng)事件
[img addGestureRecognizer:gesture];
- (void)tapAct:(UITapGestureRecognizer *)gestrue{
 UIView* image = gestrue.view;
 //開啟動(dòng)畫
 [UIView beginAnimations:nil context:nil];
//    獲取手勢(shì)在視圖中的位置
 CGPoint point = [gestrue locationInView:image];
 image.frame = CGRectMake(point.x, point.y, image.frame.size.width, image.frame.size.height);
 [UIView commitAnimations];
 NSLog(@"%@",NSStringFromCGPoint(point));
}
//注一個(gè)視圖可以添加多個(gè)響應(yīng)事件 但是一個(gè)響應(yīng)事件不能給多個(gè)視圖使用
  • UIGestureRecognizer(手勢(shì)高級(jí)事件)
    • UIRotationGestureRecognizer UIPinchGestureRecognizer
   - (instancetype)init{
    mainPage* view = [super init];
    UIImage* imgData = [UIImage imageNamed:@"test1.jpg"];
    UIImageView* img = [[UIImageView alloc] initWithImage:imgData];
    img.frame = CGRectMake(0, 0, 300, 500);
    [view addSubview:img];
    img.userInteractionEnabled = YES;
    UIRotationGestureRecognizer* rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotaAct:)];

    UIPinchGestureRecognizer* pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAct:)];
    [img addGestureRecognizer:rotation];
    [img addGestureRecognizer:pinch];
    return view;
}
- (void)pinchAct:(UIPinchGestureRecognizer *)gestrue{
    UIImageView* curView = (UIImageView*)gestrue.view;
//    在原來(lái)的矩陣基礎(chǔ)上進(jìn)行縮放大小的矩陣變換 參數(shù)2是x方向縮放比例 參數(shù)2是Y方向縮放比例
    curView.transform = CGAffineTransformScale(curView.transform, gestrue.scale, gestrue.scale);
    //做完一次變換后必須歸為 不然會(huì)進(jìn)行累加 縮放效果太大
    gestrue.scale = 1;
    NSLog(@"pinch");
}
- (void)rotaAct:(UIRotationGestureRecognizer *)gestrue{
    UIImageView* curView = (UIImageView*)gestrue.view;
    //    在原來(lái)的矩陣基礎(chǔ)上進(jìn)行縮放大小的矩陣變換
    curView.transform = CGAffineTransformRotate(curView.transform, gestrue.rotation);
    //做完一次變換后必須歸為 不然會(huì)進(jìn)行累加 縮放效果太大
    gestrue.rotation = 0;
    NSLog(@"rotate");
}

注:如果要實(shí)現(xiàn)多個(gè)手勢(shì)事件同時(shí)響應(yīng)的話需要實(shí)現(xiàn)<UIGestureRecognizerDelegate>代理
然后給手勢(shì)對(duì)象的代理設(shè)置為實(shí)現(xiàn)了代理的類 然后實(shí)現(xiàn)shouldRecognizeSimultaneouslyWithGestureRecognizer方法
返回YES 即允許同時(shí)響應(yīng)多個(gè)手勢(shì)事件

  • 拓展手勢(shì)
    • UIPanGestureRecognizer 平移手勢(shì)
    • UILongPressGestureRecognizer 長(zhǎng)按手勢(shì)
    • UISwipeGestureRecognizer 滑動(dòng)手勢(shì)
  • xib使用
//AppDelegate.m                                                 //nibName要對(duì)應(yīng)xib名稱    mainBundle代表是根目錄
self.window.rootViewController = [[ViewController alloc] initWithNibName:@"VCxib" bundle:[NSBundle mainBundle]];
  • 自動(dòng)布局 autoresizingMask
//注意 如果視圖要緊貼容器右側(cè)即設(shè)置左邊距為自動(dòng)布局 其他也是
self.con.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
//注意 自動(dòng)布局可以設(shè)置多個(gè)屬性
self.con.autoresizingMask = UIViewAutoresizingFlexibleWidth;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淋肾,一起剝皮案震驚了整個(gè)濱河市射沟,隨后出現(xiàn)的幾起案子剩辟,更是在濱河造成了極大的恐慌剂娄,老刑警劉巖珍德,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尉剩,死亡現(xiàn)場(chǎng)離奇詭異面粮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)邑退,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門竹宋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人地技,你說(shuō)我怎么就攤上這事蜈七。” “怎么了莫矗?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵飒硅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我作谚,道長(zhǎng)狡相,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任食磕,我火速辦了婚禮尽棕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘彬伦。我一直安慰自己滔悉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布单绑。 她就那樣靜靜地躺著回官,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搂橙。 梳的紋絲不亂的頭發(fā)上歉提,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音区转,去河邊找鬼苔巨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛废离,可吹牛的內(nèi)容都是我干的侄泽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼蜻韭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼悼尾!你這毒婦竟也來(lái)了柿扣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤闺魏,失蹤者是張志新(化名)和其女友劉穎未状,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體析桥,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刚盈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年嗜傅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啊胶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饲常。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡马靠,死狀恐怖西疤,靈堂內(nèi)的尸體忽然破棺而出对室,到底是詐尸還是另有隱情隧甚,我是刑警寧澤拉宗,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布峦树,位于F島的核電站,受9級(jí)特大地震影響旦事,放射性物質(zhì)發(fā)生泄漏魁巩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一姐浮、第九天 我趴在偏房一處隱蔽的房頂上張望谷遂。 院中可真熱鬧,春花似錦卖鲤、人聲如沸肾扰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)集晚。三九已至,卻和暖如春区匣,著一層夾襖步出監(jiān)牢的瞬間偷拔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工亏钩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留莲绰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓姑丑,卻偏偏與公主長(zhǎng)得像钉蒲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子彻坛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容