• UI学习之常用方法


    1.-(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)

    1 if ([delegate respondsToSelector:@selector(didFinishUpload:)]) {
    2   [delegate didFinishUpload:self];
    3 }

    视图篇

    1.[self presentViewController:jump animated:YES completion:nil];//视图跳转[self dismissViewControllerAnimated:YES completion:nil];//视图回跳

    2.self.window .rootViewController = loginVC;给window添加根视图控制器。

    3.   recruitmentViewController *recruitment = [[recruitmentViewController alloc] init];

         [UIApplication sharedApplication].delegate.window.rootViewController = recruitment;在非

    #import "AppDelegate.h"中给window添加根视图控制器。

    4. [self.window makeKeyAndVisible];//显示(使其可见)

    5.self.window.frame = [[UIScreen mainScreen] bounds];//指定window大小跟屏幕大下一致

    6.   [viewF insertSubview:view2 atIndex:1];在viewF第n层插入一个子视图

    7.  view3.alpha = 0.3;//透明度     view3.hidden = NO;//是否隐藏,隐藏不需要的的视图

    8.  [viewF insertSubview:view3 aboveSubview:view4];将view3子视图添加到view4子视图下

         [viewF insertSubview:view3 belowSubview:view4];//反之

    9.  [viewF exchangeSubviewAtIndex:2 withSubviewAtIndex:3];//交换两个位置的视图(父视图上面的第一层为1)

    10. [viewF sendSubviewToBack:view4];//将某个子视图移到父视图的最底层(在确保view4已经添加到了视图中的前提下)

    10. UIView *view5 = [viewF viewWithTag:3];//获取父视图中标签为3的视图     view5.backgroundColor = [UIColor blackColor];

    11. view4.userInteractionEnabled = YES;//是否允许用户点击(默认YES),如果设置成no,子视图不会覆盖父视图的点击事件

          self.view.userInteractionEnabled = YES;//如果父视图不允许交互,那么子视图的事件也会被屏蔽

    12.   b.center = CGPointMake(180, 300);//以(180, 300)为视图中心中心重新定位

    13. label.font = [UIFont systemFontOfSize:18];//系统字体

    14./label.font = [UIFont boldSystemFontOfSize:18];//系统字体加粗

    15.label.font = [UIFont fontWithName:<#(NSString *)#> size:<#(CGFloat)#>];//自定义字体,第一个参数代表字体名,第二个参数代表大小

    16.label.numberOfLines = 0;//设置为可现显示任意行

    label.lineBreakMode = NSLineBreakByWordWrapping;//换行样式

    17.label.textAlignment = NSTextAlignmentRight;//对齐方式

    18.label.shadowColor = [UIColor blackColor];//文本的阴影颜色

    19.label.shadowOffset = CGSizeMake(2, 3);//文本的阴影偏移

    20. label.enabled = NO;//是否激活,默认YES

    21.

    1. lineBreakMode:设置标签文字过长时的显示方式。   
    2. label.lineBreakMode = NSLineBreakByCharWrapping;    //以字符为显示单位显示,后面部分省略不显示。   
    3. label.lineBreakMode = NSLineBreakByClipping;        //剪切与文本宽度相同的内容长度,后半部分被删除。   
    4. label.lineBreakMode = NSLineBreakByTruncatingHead;  //前面部分文字以……方式省略,显示尾部文字内容。   
    5. label.lineBreakMode = NSLineBreakByTruncatingMiddle;    //中间的内容以……方式省略,显示头尾的文字内容。   
    6. label.lineBreakMode = NSLineBreakByTruncatingTail;  //结尾部分的内容以……方式省略,显示头的文字内容。   
    7. label.lineBreakMode = NSLineBreakByWordWrapping;    //以单词为显示单位显示,后面部分省略不显示。

    button.layer.masksToBounds = YES;//多余部分剪切掉

    按钮篇

    1. UISwitch *switch1 = [[UISwitch alloc] initWithFrame:CGRectMake(30, 50, 100, 90)];//高度

    2. switch1.onTintColor = [UIColor blueColor];//

    3.switch1.tintColor = [UIColor redColor];

    4.switch1.thumbTintColor = [UIColor purpleColor];

    5. switch1.on = YES;//设置开关初始状态

    6. [switch1 addTarget:self action:@selector(mySwitch:) forControlEvents:UIControlEventValueChanged];//绑定监听事件

    7. UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:@[@"122",@"123",@"121"]];

    8.seg.frame = CGRectMake(20, 40, 200, 40);

    9. NSLog(@"段数:%zi",seg.numberOfSegments);

    10. [seg insertSegmentWithImage:[UIImage imageNamed:@"avatar"] atIndex:3 animated:YES];//插入图片,图片大小应合适

    11. [seg setTitle:@"分段" forSegmentAtIndex:3];//给某一段设置标题

    12.NSString *s = [seg titleForSegmentAtIndex:1];//获取标题

    13.UIImage *image = [seg imageForSegmentAtIndex:3];//获取图片

    14.[seg setWidth:100 forSegmentAtIndex:2];//设置某段的宽

    15.[seg setEnabled:NO];//整体不被激活

    16.[seg setEnabled:NO forSegmentAtIndex:1];//设置某一段是否被激活

    17.seg.selectedSegmentIndex = 1;//设置默认选中项

    18. NSLog(@"选中:%zi",seg.selectedSegmentIndex);//获取当前被选中的段

    19. seg.tintColor = [UIColor redColor];//边框和选中颜色

    20.[seg setBackgroundImage:[UIImage imageNamed:@"btn_select"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

    21.[seg addTarget:self action:@selector(segmentChange) forControlEvents:UIControlEventValueChanged];//绑定监听事件

    22.UISegmentedControl *seg1 = [[UISegmentedControl alloc] initWithFrame:CGRectMake(20, 100, 200, 40)];

    23.[seg1 insertSegmentWithTitle:@"分段" atIndex:1 animated:YES];

    24.[seg1 insertSegmentWithTitle:@"分段1" atIndex:0 animated:YES];//增加

    25.[seg1 removeSegmentAtIndex:1 animated:YES];//移除

    Button: 

    1.[myButton.layer setCornerRadius:20.0];//设置圆角半径
    2.myButton.frame = CGRectMake(15+90*j, 150+60*i, 70, 40);
    3.myButton.backgroundColor = [UIColor orangeColor];//橙黄色
    4.myButton.titleLabel.font = [UIFont systemFontOfSize: 30]; ;//字体大小
    5.[myButton setTitle:ButtonTag[i*4+j] forState:UIControlStateNormal];//设置标题和

    6.button.showsTouchWhenHighlighted = YES;//点击高亮

    7.[myButton setImage:[UIImage imageNamed:@"home"] forState:UIControlStateNormal];//设置图片

    8.[headLeftLabel setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];//button文字对齐方式

    图片篇

    1. UIImage *img =[UIImage imageNamed:@"1.jpg"];    NSLog(@"%@",img);

    2. UIImage *img1 = [UIImage imageWithContentsOfFile:@"/Users/yangjie/Pictures/3.jpg"];//通过路径获取图片

    3. NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://g.hiphotos.baidu.com/zhidao/pic/item/9f510fb30f2442a79fbc68ded343ad4bd113021e.jpg"]];//通过URL拿到图片的数据

    4.UIImage *img2 = [UIImage imageWithData:imgData];

    5. NSData *data1 = UIImageJPEGRepresentation(img2, 1);//图片转换成data,第一个是要转换的图片对象,第二个参数代表压缩质量(0~1浮点,1代表不压缩)

    6. NSLog(@"--%zi",data1.length);

    7. NSData *data2 = UIImagePNGRepresentation(img1);//图片转换成data

    8.UIImageView *imgView = [[UIImageView alloc] initWithImage:img2];

    imgView.frame = CGRectMake(20, 30, 200, 200);

    9.float w = img2.size.width;//获取图片的宽 float h = img2.size.height;//获取图片的高

    菜单篇

    1..动态菜单

    
    

    //UIViewController<UIActionSheetDelegate>//遵循动态菜单代理模式

    1 - (void) login
    2 {
    3     NSLog(@"点击");
    4     UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Delegate Example" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Destruct" otherButtonTitles:@"BUtton 1" , @"BUtton 2" , @"BUtton 3" , nil];
    5     [actionSheet showInView:self.tabBarController.view]; 
    7 }

    - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

        switch (buttonIndex) {

            case 0:  NSLog(@"Action Destructed!") ;break;

            case 1:   NSLog(@"Action Button 1 Clicked!");break;

            case 2:  NSLog(@"Action Button 2 Clicked!");break;

    
    

            case 3:  NSLog(@"Cancel Button Clicked!"); break;

            default:  break;

        }

    }

     

    2. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"提示内容" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"按钮1",@"按钮2", nil];//alert创建

    3.  alert.title = @"123";//设置标题

    4.  alert.message = @"11111";//设置内容

    5. [alert show];//使其能显示

    6. [alert dismissWithClickedButtonIndex:0 animated:YES];//消失alert

    画图篇

    1.自定义画图,类似android的onDraw()

    - (void)drawRect:(CGRect)rect;

     is invoked automaticall,never call it directly!!

    2.刷新视图,类似android的invalidate()

    - (void)setNeedsDisplay;

    When a view needs to be redrawn,use: 

    3.在非主线程中调用,需使用如下方法:

          - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait
          - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

    4.setNeedsDisplay是不阻塞的,
         需要自己制造阻塞,
         setNeedsDisplay我理解就是告诉系统,等会帮哥把这块重新画一下。
         系统就知道了,等系统有空了,他就一起画了,
         如果想立即画出来,可能要用setNeedsLayout,
         或者不用drawInRect系列的方式,直接改view.image或者文字,加动画等方式实现吧。

    5.setNeedsDisplay和layoutSubViews

         首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调  用layoutSubViews,就可以处理子视图中的一些数据。
    宗上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据。

    eg:

     1 #import "TuYa.h"
     2 
     3 @implementation TuYa
     4 - (id)initWithFrame:(CGRect)frame
     5 {
     6     self = [super initWithFrame:frame];
     7     if(self)
     8     {
     9         _lineArray = [[NSMutableArray alloc] init];
    10         UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    11         button.frame = CGRectMake(0, 30, 60, 40);
    12         [button setTitle:@"撤销" forState:UIControlStateNormal];
    13         button.backgroundColor = [UIColor orangeColor];
    14         [button addTarget:self action:@selector(undoDraw) forControlEvents:UIControlEventTouchUpInside];
    15         [self addSubview:button];
    16     }
    17     return self;
    18 }
    19 //每次开始触摸的时候增加一个新数组,数组记录画出的点,这些点用于回话
    20 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    21 {
    22     [_lineArray addObject:[NSMutableArray arrayWithCapacity:1]];
    23 }
    24 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    25 {
    26     UITouch *touch = [touches anyObject];
    27     CGPoint point = [touch locationInView:self];
    28     NSValue *value = [NSValue valueWithCGPoint:point];
    29     [[_lineArray lastObject] addObject:value];//给最后一根线加点
    30     [self setNeedsDisplay];//setNeedsDisplay会调用自动调用drawRect方法
    31 }
    32 - (void)drawRect:(CGRect)rect
    33 {
    34     CGContextRef context = UIGraphicsGetCurrentContext();//获得上下文
    35     CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);//画笔颜色
    36     for( int i = 0 ; i < _lineArray.count ; i ++ )
    37     {
    38         NSMutableArray *pointArray = [[NSMutableArray alloc] initWithArray:[_lineArray objectAtIndex:i]];
    39         for( int j = 0 ; j < pointArray.count-1 ; j ++ )
    40         {
    41             NSValue *a = pointArray[j];
    42             CGPoint b = [a CGPointValue];
    43             NSValue *c = pointArray[j+1];
    44             CGPoint d = [c CGPointValue];
    45             
    46             CGContextMoveToPoint(context, b.x, b.y);
    47             CGContextAddLineToPoint(context, d.x, d.y);
    48         }
    49     }
    50     CGContextStrokePath(context);
    51 }
    52 - (void)undoDraw
    53 {
    54     [_lineArray removeLastObject];
    55     //会自动调用UIView的drawRect方法
    56     [self setNeedsDisplay];//重绘
    57 }
    58 /*
    59 // Only override drawRect: if you perform custom drawing.
    60 // An empty implementation adversely affects performance during animation.
    61 - (void)drawRect:(CGRect)rect {
    62     // Drawing code
    63 }
    64 */
    65 
    66 @end

    程序篇 

    1.UITextField

      1 #import "ViewController.h"
      2 
      3 @interface ViewController ()<UITextFieldDelegate>//重写代理方法观看TextFiled执行过程
      4 {
      5 UITextField *field;
      6 UITextField *field1;
      7 }
      8 
      9 @end
     10 
     11 @implementation ViewController
     12 
     13 - (void)viewDidLoad {
     14     [super viewDidLoad];
     15     self.view.backgroundColor = [UIColor blackColor];//背景必须要设置
     16     self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"128"]];//设置背景图片
     17     //创建自定义键盘
     18     UIView *keyView = [[UIView alloc]init];
     19     keyView.frame = CGRectMake(0, 0, 400, 20);
     20     keyView.backgroundColor = [UIColor redColor];
     21     //对照
     22     field1 = [[UITextField alloc] init];
     23     field1.frame = CGRectMake(30, 80, 150, 30);
     24     field1.backgroundColor = [UIColor whiteColor];
     25     field1.placeholder = @"占位符";//占位符
     26     //实验
     27     field = [[UITextField alloc] init];
     28     field.frame = CGRectMake(30, 30, 150, 30);
     29     field.backgroundColor = [UIColor whiteColor];
     30     field.placeholder = @"占位符";//占位符
     31     
     32     field.borderStyle = UITextBorderStyleNone ;//边框风格
     33 /*
     34  typedef NS_ENUM(NSInteger, UITextBorderStyle) {
     35  UITextBorderStyleNone,
     36  UITextBorderStyleLine,//黑框
     37  UITextBorderStyleBezel,//立体
     38  UITextBorderStyleRoundedRect//圆角
     39  };
     40  */
     41     
     42      field.keyboardType = UIKeyboardTypeDefault;//设置键盘类型
     43 /*
     44  typedef NS_ENUM(NSInteger, UIKeyboardType) {
     45  UIKeyboardTypeDefault,                // Default type for the current input method.
     46  UIKeyboardTypeASCIICapable,           // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
     47  UIKeyboardTypeNumbersAndPunctuation,  // Numbers and assorted punctuation.
     48  UIKeyboardTypeURL,                    // A type optimized for URL entry (shows . / .com prominently).
     49  UIKeyboardTypeNumberPad,              // A number pad (0-9). Suitable for PIN entry.
     50  UIKeyboardTypePhonePad,               // A phone pad (1-9, *, 0, #, with letters under the numbers).
     51  UIKeyboardTypeNamePhonePad,           // A type optimized for entering a person's name or phone number.
     52  UIKeyboardTypeEmailAddress,           // A type optimized for multiple email address entry (shows space @ . prominently).
     53  UIKeyboardTypeDecimalPad NS_ENUM_AVAILABLE_IOS(4_1),   // A number pad with a decimal point.
     54  UIKeyboardTypeTwitter NS_ENUM_AVAILABLE_IOS(5_0),      // A type optimized for twitter text entry (easy access to @ #)
     55  UIKeyboardTypeWebSearch NS_ENUM_AVAILABLE_IOS(7_0),    // A default keyboard type with URL-oriented addition (shows space . prominently).
     56  
     57  UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated
     58  
     59  };
     60 */
     61     field.returnKeyType = UIReturnKeyYahoo;//设置键盘return键样式
     62 /*
     63  typedef NS_ENUM(NSInteger, UIReturnKeyType) {
     64  UIReturnKeyDefault,
     65  UIReturnKeyGo,
     66  UIReturnKeyGoogle,
     67  UIReturnKeyJoin,
     68  UIReturnKeyNext,
     69  UIReturnKeyRoute,
     70  UIReturnKeySearch,
     71  UIReturnKeySend,
     72  UIReturnKeyYahoo,
     73  UIReturnKeyDone,
     74  UIReturnKeyEmergencyCall,
     75  };
     76  */
     77     
     78     field.background = [UIImage imageNamed:@""];//添加背景
     79     
     80     field.clearButtonMode = UITextFieldViewModeWhileEditing;//文明本后面加个"x"清除文本
     81 /*
     82  typedef NS_ENUM(NSInteger, UITextFieldViewMode) {
     83  UITextFieldViewModeNever,"X"从不出现
     84  UITextFieldViewModeWhileEditing,"X"编辑本文本时出现,否则消失
     85  UITextFieldViewModeUnlessEditing,"X"编辑本文本时消失,否则出现
     86  UITextFieldViewModeAlways//"X"永远存在
     87  };
     88  */
     89     field.clearsOnBeginEditing = YES; //重新点击,清除所有文本内容
     90     
     91 //    field.leftView = myView;//在文本左侧添加一视图
     92     field.leftViewMode = UITextFieldViewModeNever;
     93 /*
     94  typedef NS_ENUM(NSInteger, UITextFieldViewMode) {
     95  UITextFieldViewModeNever,
     96  UITextFieldViewModeWhileEditing,
     97  UITextFieldViewModeUnlessEditing,
     98  UITextFieldViewModeAlways
     99  };
    100  */
    101     
    102     field.inputView = keyView;//当文本框在编辑时的弹出视图,类似键盘
    103 
    104     field.delegate = self;//设置代理(由当前视图来执行)下边重写代理方法
    105     field1.delegate = self;
    106     
    107     [self.view addSubview:field];
    108     [self.view addSubview:field1];
    109 }
    110 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    111 {
    112     [self.view endEditing:YES];
    113     NSLog(@"点击事件");
    114 }
    115 
    116 //代理方法的实现,如果返回为NO则相应的操作不被实现(例如:删除文本不起作用)
    117 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    118 {
    119     if(textField == field)
    120     NSLog(@"field将要编辑");
    121     else if(textField == field1)
    122         NSLog(@"field1将要编辑");
    123     return YES;
    124 }// 将要编辑。
    125 
    126 - (void)textFieldDidBeginEditing:(UITextField *)textField
    127 {
    128     if(textField == field)
    129         NSLog(@"field开始编辑");
    130     else if(textField == field1)
    131         NSLog(@"field1开始编辑");
    132 }// 开始编辑
    133 //- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;          // 将要结束编辑
    134 //- (void)textFieldDidEndEditing:(UITextField *)textField;             // 结束编辑
    135 //
    136 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    137 {
    138     if(textField == field)
    139         NSLog(@"field开始键入字符");
    140     else if(textField == field1)
    141         NSLog(@"field1开始键入字符");
    142     return YES;
    143 }// 开始键入字符
    144 //
    145 - (BOOL)textFieldShouldClear:(UITextField *)textField
    146 {
    147     if(textField == field)
    148         NSLog(@"field开始删除字符");
    149     else if(textField == field1)
    150         NSLog(@"field1开始删除字符");
    151     return YES;
    152 }//  在执行field.clearButtonMode(后面有"X")起作用
    153 - (BOOL)textFieldShouldReturn:(UITextField *)textField
    154 {
    155     if(textField == field)
    156         NSLog(@"field返回");
    157     else if(textField == field1)
    158         NSLog(@"field1返回");
    159     [self.view endEditing:YES];
    160     return YES;
    161 }// 返回时调用,可以利用其退出键盘
    162 
    163 
    164 - (void)didReceiveMemoryWarning {
    165     [super didReceiveMemoryWarning];
    166     // Dispose of any resources that can be recreated.
    167 }
    168 
    169 @end

     1.UITextView

     1 #import "ViewController.h"
     2 
     3 @interface ViewController ()<UITextViewDelegate>
     4 {
     5     UITextView *textView;
     6 }
     7 @end
     8 
     9 @implementation ViewController
    10 
    11 - (void)viewDidLoad {
    12     [super viewDidLoad];
    13     textView = [[UITextView alloc] initWithFrame:CGRectMake(30, 30, 100, 100)];
    14     textView.backgroundColor = [UIColor yellowColor];
    15     textView.editable = YES;//是否允许编辑
    16     textView.scrollEnabled = YES;//是否允许滚动
    17     textView.bounces = YES;//弹簧效果
    18     textView.layer.borderColor = [UIColor redColor].CGColor;//边框颜色
    19     textView.layer.cornerRadius = 10;//圆角半径
    20     textView.layer.borderWidth = 1;//边框粗细
    21     textView.layer.masksToBounds = YES;//设置超出主图层的部分把它给剪切掉。
    22     //阴影设置
    23     textView.clipsToBounds =NO;//要把其设为NO
    24     textView.layer.shadowColor=[UIColor redColor].CGColor;
    25     textView.layer.shadowOffset=CGSizeMake(10, 10);
    26     textView.layer.shadowOpacity=1;
    27     textView.layer.shadowRadius=10;
    28     
    29     
    30     textView.returnKeyType = UIReturnKeyDefault;
    31 /*
    32  typedef NS_ENUM(NSInteger, UIReturnKeyType) {
    33  UIReturnKeyDefault,
    34  UIReturnKeyGo,
    35  UIReturnKeyGoogle,
    36  UIReturnKeyJoin,
    37  UIReturnKeyNext,
    38  UIReturnKeyRoute,
    39  UIReturnKeySearch,
    40  UIReturnKeySend,
    41  UIReturnKeyYahoo,
    42  UIReturnKeyDone,
    43  UIReturnKeyEmergencyCall,
    44  };
    45  */
    46     textView.delegate = self;
    47     self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"129"]];
    48     [self.view addSubview:textView];
    49 }
    50 -(BOOL)textView:(UITextView *)textView1 shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    51 {
    52     
    53     if([text isEqual:@"
    "])
    54     {
    55         [self.view endEditing:YES];
    56     }
    57     return YES;
    58 }
    59 
    60 -(void)textViewDidChange:(UITextView *)textView1
    61 {
    62     NSLog(@"%@",textView1.text);
    63 }//文本改变了之后
    64 - (void)didReceiveMemoryWarning {
    65     [super didReceiveMemoryWarning];
    66     // Dispose of any resources that can be recreated.
    67 }
    68 - (void)textViewDidBeginEditing:(UITextView *)textView1
    69 {
    70     NSLog(@"%@",textView1.text);
    71 }
    72 @end

     UIScollView

     1 #import "ViewController.h"
     2 #define WIDE [[UIScreen mainScreen] bounds].size.width
     3 #define HIGH [[UIScreen mainScreen] bounds].size.height
     4 @interface ViewController ()<UIScrollViewDelegate>
     5 {
     6     UIScrollView *scrollVIew;
     7     UIImageView *imageView;
     8 }
     9 @end
    10 
    11 @implementation ViewController
    12 
    13 - (void)viewDidLoad {//注意: window大小 ->scrollView大小->
    scrollView内容大小-> imageView大小 
    14 [super viewDidLoad];
    15 scrollVIew = [[UIScrollView alloc]initWithFrame: CGRectMake(10, 20, WIDE-20, HIGH-30)];
    16 scrollVIew.backgroundColor= [UIColor grayColor];
    17 scrollVIew.contentSize = CGSizeMake(5*375, 5*667);// scrollVIew内容的大小,与 scrollVIew大小无关
    18 // scrollVIew.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://h.hiphotos.baidu.com/zhidao/pic/item/8b82b9014a90f603e4fbc5573b12b31bb051ed53.jpg"]]]];
    19 imageView = [[UIImageView alloc]initWithImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://h.hiphotos.baidu.com/zhidao/pic/item/8b82b9014a90f603e4fbc5573b12b31bb051ed53.jpg"]]]];//从网络获取图片放至 imageView
    20 imageView.frame = CGRectMake(10, 10, 5*375-20, 5*667-20);//设置 imageView大小,此处比scrollVIew小一圈,是以scrollVIew坐标系为基准的
    21 [scrollVIew addSubview:imageView];//将 imageView添加到scrollVIew
    22 scrollVIew.contentOffset = CGPointMake(100, 100);//设置初始位置
    23 // CGPoint point = scrollVIew.contentOffset;////获取scrollView当前滚动的位置
    24 // scrollVIew.bounces = NO;//是否有弹簧效果
    25 // scrollVIew.showsHorizontalScrollIndicator = NO;//是否显示水平滚动条,默认yes
    26 // scrollVIew.showsVerticalScrollIndicator = NO;//是否显示垂直滚动条
    27 scrollVIew.pagingEnabled = NO;//是否允许整页滚动,默认no(跳页)
    28 scrollVIew.scrollEnabled = YES;//是否允许滚动(手滚,强制跳转可以)
    29 scrollVIew.scrollsToTop = NO;//是否允许用户点击状态栏时,滑动到顶部,默认yes
    30 // [scrollVIew setContentOffset:CGPointMake(100, 0) animated:YES];//设置scrollView滚动到某个位置,是否有动画效果
    31 // [scrollVIew scrollRectToVisible:CGRectMake(375, 20, self.view.frame.size.width, self.view.frame.size.height) animated:YES];//设置scrollView滚动到某可视区域,是否添加动画效果
    32 scrollVIew.minimumZoomScale = 0.1;//最小缩放倍数
    33 scrollVIew.maximumZoomScale = 10;//最大缩放倍数
    34 scrollVIew.delegate = self;
    36 [self.view addSubview:scrollVIew];
    37 }
    38 -(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    39 //视图是否在滚动
    40 }
    41 -(void) scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    42 //滚动视图开始被拖动
    43 }
    44 -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    45 //结束拖动,
    46 }
    47 -(void)scrollViewWillBeginDecelerating: (UIScrollView *)scrollView{
    48 //滚动视图开始减速
    49 }
    50 -(void)scrollViewDidEndDecelerating: (UIScrollView *)scrollView{
    51 //减速停止
    52 }
    53 -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    54 //实现缩放视图代理方法,不实现此方法无法缩放 55 //告诉scrollView,是哪个子视图要进行缩放
    56 return imageView;
    57 }
    58 -(void)scrollViewDidZoom:(UIScrollView *)scrollView{
    59 //正在缩放
    60 }
    61
    62 - (void)didReceiveMemoryWarning {
    63 [super didReceiveMemoryWarning];
    64 // Dispose of any resources that can be recreated.
    65 }
    66
    67 @end

     UIPageView

     1 #import "ViewController.h"
     2 
     3 @interface ViewController ()<UIScrollViewDelegate>{
     4     UIPageControl *page;
     5     UIScrollView  *scrollView;
     6 }
     7 
     8 @end
     9 
    10 @implementation ViewController
    11 
    12 - (void)viewDidLoad {
    13     [super viewDidLoad];
    14 
    15     page = [[UIPageControl alloc] initWithFrame:CGRectMake(20, 30, 200, 40)];
    16     page.backgroundColor = [UIColor clearColor];
    17     page.numberOfPages = 3;//设置页数(多少个点)
    18     page.currentPage = 0;//设置当前选中页
    19     NSLog(@"%ld",page.currentPage);//获取当前选中页下标
    20     page.pageIndicatorTintColor = [UIColor greenColor];//未选中颜色
    21     page.currentPageIndicatorTintColor = [UIColor redColor];//当前选中的颜色
    22     [page addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];
    23     [self.view addSubview:page];
    24     
    25     scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 90, 300, 400)];
    26     scrollView.contentSize = CGSizeMake(900, 0);
    27     scrollView.delegate = self;
    28     scrollView.pagingEnabled = YES;
    29     [self.view addSubview:scrollView];
    30     
    31     UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)];
    32     view.backgroundColor = [UIColor grayColor];
    33     [scrollView addSubview:view];
    34     
    35     UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(300, 0, 300, 400)];
    36     view1.backgroundColor = [UIColor brownColor];
    37     [scrollView addSubview:view1];
    38     
    39     UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(600, 0, 300, 400)];
    40     view2.backgroundColor = [UIColor purpleColor];
    41     [scrollView addSubview:view2];
    42 
    43     
    44 }
    45 
    46 -(void)change:(id)page{
    47     NSLog(@"--%zi",[page currentPage]);
    48     
    49     CGPoint p = {[page currentPage]*300,0};
    50     [scrollView setContentOffset:p animated:YES];
    51 }
    52 
    53 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    54     int index = scrollView.contentOffset.x/scrollView.frame.size.width;
    55     page.currentPage = index;
    56 }
    57 
    58 - (void)didReceiveMemoryWarning {
    59     [super didReceiveMemoryWarning];
    60     // Dispose of any resources that can be recreated.
    61 }
    62 
    63 @end

     UITableView

    //遵从协议<UITableViewDataSource,UITableViewDelegate>
    //初始化
        myTableView2 = [[UITableView alloc] initWithFrame:CGRectMake(0, 80, 375, 520) style:UITableViewStylePlain];
        myTableView2.delegate = self;
        myTableView2.dataSource = self;
        [self.view addSubview:myTableView2];
    //协议的实现
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return talentPool.count;
    }
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *string = @"cell";
        //尝试从可重用的cell队列中取出来(屏幕需要显示cell+1)
        //如果没有取到,就新建一个cell
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:string];//出列可重用的细胞与标识符
        if(cell == nil)
        {
            //实例化一个新的cell,cell有一个重用标识 @"cell"
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:string];
        }
        cell.textLabel.text = [talentPool[indexPath.row] name];
        cell.detailTextLabel.textColor = [UIColor redColor];
        cell.detailTextLabel.text = [NSString stringWithFormat: @"学校%@ 等级%d NO:%ld",[talentPool[indexPath.row] school],[talentPool[indexPath.row] levell],indexPath.row+1];
        
        return cell;
    }
    //当我们点击某个cell时,会执行下面这个方法,方法中调用另一方法执行具体操作:
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        delete = indexPath.row;
    }

     UITableView

      1 //[tableVIew reloadData];//重新加载数据***********
      2 #import "ViewController.h"
      3 
      4 @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
      5 {
      6     long delete;
      7     UITableView *tableVIew;
      8     NSMutableArray  *array;
      9 }
     10 @end
     11 
     12 @implementation ViewController
     13 
     14 - (void)viewDidLoad {
     15     [super viewDidLoad];
     16     tableVIew = [[UITableView alloc]initWithFrame:self.view.bounds];
     17 //    tableVIew.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://pic.baike.soso.com/p/20131220/20131220045831-1022519378.jpg"]]]];
     18     tableVIew.separatorColor = [UIColor redColor];////设置tableView分割线的颜色
     19 //    UIImageView *imageVIew = [[UIImageView alloc]initWithImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://pic.baike.soso.com/p/20131220/20131220045831-1022519378.jpg"]]]];//从网络获取图片
     20 //    imageVIew.frame = CGRectMake(0, 0 ,0, 40);
     21 //    tableVIew.tableHeaderView = imageVIew;//设置列表的头视图,可以是view或者其子类的对象
     22 //    tableVIew.tableFooterView = imageVIew;//设置列表的底部视图,可以是view或者其子类的对象
     23     tableVIew.separatorStyle = UITableViewCellSeparatorStyleSingleLine;//设置分割线风格
     24     /*
     25      typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {
     26      UITableViewCellSeparatorStyleNone,//无分割线
     27      UITableViewCellSeparatorStyleSingleLine,//有内容处无分割线,否则有
     28      UITableViewCellSeparatorStyleSingleLineEtched   // 有分割线
     29      };
     30      */
     31 //       tableVIew.rowHeight = 80;//设置行高
     32     tableVIew.delegate = self;//设置代理
     33     tableVIew.dataSource = self;//设置数据源,因为在实现协议方法时,用了大量的返回值,所以需要对视图控制器实现代理
     34    
     35     [self.view addSubview:tableVIew];
     36     array  = [NSMutableArray arrayWithObjects:@"刘冠", @"刘冠", @"刘冠", @"刘冠",nil];
     37    
     38 }
     39 //协议方法实现
     40 #pragma mark - UITableViewDataSourceMethod-1
     41 //设置分组
     42 //- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
     43 //{
     44 //    return 3;
     45 //}
     46 //设置每组行数(默认一组)
     47 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
     48 {
     49 //    if(section == 0)//第一组
     50 //        return 4;
     51 //    else  if(section == 1)//第二组
     52 //        return 3;
     53 //    return 2;//第三组
     54     return array.count;//返回数组长度
     55 }
     56 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
     57 {
     58     static NSString *string = @"cell";
     59     //尝试从可重用的cell队列中取出来(屏幕需要显示cell+1)
     60     //如果没有取到,就新建一个cell
     61     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:string];//出列可重用的细胞与标识符
     62     if(cell == nil)
     63     {
     64         //实例化一个新的cell,cell有一个重用标识 @"cell"
     65         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:string];
     66         /*
     67          typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
     68          UITableViewCellStyleDefault,    // 只显示图片和标题
     69          UITableViewCellStyleValue1,        // 显示图片,标题和子标题(子标题在右边)
     70          UITableViewCellStyleValue2,        // 标题和子标题
     71          UITableViewCellStyleSubtitle    //上下结构  显示图片,标题和子标题(子标题在下边)
     72          };             // available in iPhone OS 3.0
     73          */
     74     }
     75     cell.backgroundColor = [UIColor clearColor];

             cell.imageView //设置图片

       //.tableHeaderView

     76 cell.textLabel.text =array[indexPath.row];  
    77
    cell.detailTextLabel.textColor = [UIColor redColor];
    78
    // cell.detailTextLabel.text = [NSString stringWithFormat: @"郑州科技学院 NO:%ld", indexPath.row+1];
    79
    //在现实中的实现方法
    80
    // cell.textLabel.text = [talentPool[indexPath.row] name];
    81
    // cell.detailTextLabel.text = [NSString stringWithFormat: @"学校%@ 等级%d NO:%ld",[talentPool[indexPath.row] school],[talentPool[indexPath.row] levell],indexPath.row+1];
    82
    /**************************************/
    83
    // cell.accessoryType/*配件*/= UITableViewCellAccessoryDetailDisclosureButton;//右侧标识图
    84
    cell.accessoryView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bug"]];//自定义右侧标识视图
    85
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;//设置cell被选中的颜色
    86
    cell.textLabel.highlightedTextColor = [UIColor whiteColor];//选中状态下,字体颜色
    87
    UIView *view = [[UIView alloc] initWithFrame:cell.frame];
    88
    view.backgroundColor = [UIColor blueColor];
    89
    cell.selectedBackgroundView = view;//自定义cell选中背景
    90
    return cell;
    91
    }
    92
    //设置每组头部的标题
    93
    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    94
    if(section == 0)//第一组
    95
    return @"第一组";
    96
    else if(section == 1)//第二组
    97
    return @"第二组";
    98
    return @"第三组";//第三组
    99
    }
    100 //设置每组底部标题
    101 -(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
    102 return @"END";
    103 }
    104 //设置tableView是否可编辑,默认YES,向左滑动出现删除按钮
    105 -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
    106 return YES;
    107 }
    108 //对tableView进行删除.....操作与上一个方法配合使用
    109 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ 110 // tableVIew
    111 NSLog(@"删除%ld",indexPath.row);
    112 [array removeObjectAtIndex:indexPath.row];
    113 [tableVIew deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationMiddle];//删除行
    114 }
    115 //左侧索引显示信息,返回数组
    116 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 117 {
    118 return 0;
    119 }
    120 //设置每组底部视图高度
    121 -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    122 return 20;
    123 }
    124 // 设置每组头部视图高度
    125 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    126 return 20;
    127 }
    128 //设置行高
    129 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    130 return 60;
    131 }
    132 //自定义组头部视图,会覆盖数据源中的设置头部标题方法
    133 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    134 return nil;
    135 }
    136 //自定义组底部视图,会覆盖数据源中的设置底部标题方法
    137 -(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    138 return nil;
    139 }
    140 //tableview行被点击,通过indexPath.row判断点击的是哪一行
    141 //当我们点击某个cell时,会执行下面这个方法,方法中调用另一方法执行具体操作:
    142 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    143 {
    144 delete = indexPath.row;
    145 [tableVIew deselectRowAtIndexPath:indexPath animated:YES];//取消被选中
    146 }
    147 - (void)didReceiveMemoryWarning {
    148 [super didReceiveMemoryWarning];
    149 }
    150
    151 @end

     UIPageController

    UIPageControl
    #import "ViewController.h"
    
    @interface ViewController ()<UIScrollViewDelegate>{
    
        UIScrollView *s;
        UIPageControl *p;
    }
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        p = [[UIPageControl alloc]initWithFrame:CGRectMake(150, 600, 100, 80)];//初始化创建
        p.numberOfPages = 3;//设置页数
        p.currentPage = 0;//设置当前页数
        p.backgroundColor = [UIColor clearColor];
        p.pageIndicatorTintColor = [UIColor orangeColor];//未选中颜色
        p.currentPageIndicatorTintColor = [UIColor greenColor];//当前选中颜色
        [p addTarget:self action:@selector(pag) forControlEvents:UIControlEventValueChanged];//valuechange!!!!
        [self.view addSubview:p];
        s = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 375, 667)];
        s.contentSize = CGSizeMake(1125,667);
        s.delegate = self;
        s.pagingEnabled = YES;
        [self.view addSubview:s];
        UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 375, 667)];
        v.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"5.jpg"]];
        [s addSubview:v];
        UIView *v1 = [[UIView alloc] initWithFrame:CGRectMake(375, 0, 375, 667)];
        v1.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"6.jpg"]];
        [s addSubview:v1];
        UIView *v2 = [[UIView alloc] initWithFrame:CGRectMake(750, 0, 375, 667)];
        v2.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"9.jpg"]];
    
        [s addSubview:v2];
        [self.view addSubview:p];
    }
    -(void)pag{
        CGPoint p1 = {[p currentPage]*375,0};//结构体
        [s setContentOffset:p1 animated:YES];//p->s  page到scroll
    }
    -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{//s->page
        CGPoint p1 = s.contentOffset;
        int index = p1.x/s.frame.size.width;
        p.currentPage = index;
    
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    
    缩放
    #import "ViewController.h"
    
    @interface ViewController ()<UIScrollViewDelegate>{
    
        UIScrollView *s;
        UIImageView  *i;
    
    }
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        s = [[UIScrollView alloc]initWithFrame:self.view.bounds];
        s.delegate = self;
        s.userInteractionEnabled = YES;//这里不需要交互
        s.minimumZoomScale = 1;
        s.maximumZoomScale = 3;
        [self.view addSubview:s];
        i = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300,500)];
        i.image = [UIImage imageNamed:@"4.jpg"];
        [s addSubview:i];
    }
    //告诉scrollView,是哪个子视图要进行缩放
    -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
        return i;
    }
    -(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
    
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end

     手势识别(非自己总结,有待验证)

    两个手势(1.缩放手势    2.拖拽手势)
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        UIImageView *v = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"4.jpg"]];
        v.frame = self.view.bounds;
        UITapGestureRecognizer *t =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(image:)];//添加手势
        t.numberOfTapsRequired = 2;//点击次数
        t.numberOfTouchesRequired = 2;//需要点击的手指个数
        v.tag = 1;
        v .userInteractionEnabled = YES;
        [v addGestureRecognizer:t];
    //拖动手势
        UIPanGestureRecognizer *p = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];//添加拖动手势
        [v addGestureRecognizer:p];
        [self.view addSubview:v];
    
    }
    -(void)image:(UITapGestureRecognizer *)ges{
        UIView *vi = ges.view;
        NSLog(@"*****%zi",vi.tag);
    }
    -(void)pan:(UIPanGestureRecognizer *)pa{
        NSLog(@"%zi",pa.state);//打印拖动时对象所处的状态
        CGPoint point = [pa locationInView:self.view]; //获取拖动手势的开始拖动点的坐标
        pa.view.center = point; //把开始拖动点的坐标赋值给pa所在的图片的中点坐标(因为pa是一个手势,是可变的,所以中心点会跟着手势变,产生拖动效果)
    }

     边框覆盖法解决UISegmentedControl不能隐藏边框问题//在ScrollVIew上面放置分段控制器

    NSArray * topArray = @[@"国内",@"国际",@"时尚",@"明星",@"淘宝",@"天气",@"健康",@"生活",@"历史",@"人文"];
    // [[UISegmentedControl appearance] setTitleTextAttributes:@{
    // NSForegroundColorAttributeName : [UIColor redColor]
    // } forState:UIControlStateNormal];
    UISegmentedControl *segmented = [[UISegmentedControl alloc]initWithItems:topArray];
    segmented.frame = CGRectMake(0, 5, 70*10, 40);
    segmented.tintColor = [UIColor redColor];//边框和选中颜色
    [top addSubview:segmented];
    [self.view addSubview:top];
    NSArray * topArray1 = @[@"",@"",@"",@"",@"",@"",@"",@"",@"",@""];
    UISegmentedControl *segmented1 = [[UISegmentedControl alloc]initWithItems:topArray1];
    segmented1.frame = CGRectMake(0, 5, 70*10, 40);
    [segmented1 setTintColor:[UIColor whiteColor]];//边框和选中颜色
    [segmented1 setUserInteractionEnabled:NO];
    [top addSubview:segmented1];
    [self.view addSubview:top];

  • 相关阅读:
    select top 变量问题
    distinct top執行順序
    Subquery typo with using in(转)
    sql:查询课程号'0312091006'成绩排名第5到第10之间的学生学号
    case when then
    触发器
    索引
    管理事物处理
    053345
    053344
  • 原文地址:https://www.cnblogs.com/liuguan/p/4948983.html
Copyright © 2020-2023  润新知