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];

原文地址:https://www.cnblogs.com/liuguan/p/4948983.html