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.
- lineBreakMode:设置标签文字过长时的显示方式。
- label.lineBreakMode = NSLineBreakByCharWrapping; //以字符为显示单位显示,后面部分省略不显示。
- label.lineBreakMode = NSLineBreakByClipping; //剪切与文本宽度相同的内容长度,后半部分被删除。
- label.lineBreakMode = NSLineBreakByTruncatingHead; //前面部分文字以……方式省略,显示尾部文字内容。
- label.lineBreakMode = NSLineBreakByTruncatingMiddle; //中间的内容以……方式省略,显示头尾的文字内容。
- label.lineBreakMode = NSLineBreakByTruncatingTail; //结尾部分的内容以……方式省略,显示头的文字内容。
- 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:@"\n"])
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];