分类 "ios" 的存档.

ios4_设计界面小结

一、iPhone的设计规则:一个窗口,多个视图。
二、iPhone的View
<1>显示数据的视图,视图就是提供数据的可视化表示。
  1.UITextView类文本段落呈现给用户(可选编辑),使用单一字号的单一字体。
  2.UILabel实例呈现短的只读文本视图。
  3.UIImageView是相框,显示图片专用,可以制作动画。
  4.UIWebView类可以展现内置Safari浏览器支持的几乎所有的数据类型。
  5.MKMapView向应用程序添加地图。
  6.UIScrollView可以水平或竖直滚动,或者缩放。
<2>做出选择的视图
  1.UIAlertView类生成弹出的窗口。
  2.UIActionSheet类提供从底下向上滚动的菜单。
注意:这两个类一显示,后面的图层都不能操作了,适当选择添加取消按钮。
<3>控件,控件是将用户触摸转换为回调触发器的屏幕对象。
  1.UIButton类,常用的触发器是TouchUpInside。栏按钮项(UIBarButtonItem)存储工具栏和导航栏按钮的属性,但他们本身并不是按钮。栏使用这些描述构建自己,程序员通常无法访问实际的按钮视图。
  2.UISegmentedControl提供一行大小相等的按钮,一次只能选一个。
  3.UISwitch提供个开关。
  4.UISlider是一个水平条滑动指示器,一个滑条。
  5.UIPageControl类提供小圆点导航。
  6.UITextField一种允许输入文字的控件,只提供一行的输入。
<4>表格和拾取器
  表格呈现一个滚动的列表。UITabelView类提供了最常用的表格样式,UIPickerView类提供滚轮式的选择,还有一个专门化的版本UIDatePicker应用于时间有关的程序中。
<5>栏,栏是精简的视图。
  UINavigationBar用来提供导航状态。
  UITabBar,UISearchBar。UIToolBar可以直接使用。
<6>进度与活动
  UIActivityIndicatorView提供纺锤式的转轮。
  UIProgressView提供一个进度条。用做游戏的血条最合适不过了。

ios03_随机密码生成类

  最近做了一个密码生成器,就是能自动的生成密码,说一下自己设置的要求:
  1.密码总共可以选择包含大写字母、小写字母、数字和特殊字符四种字符。
  2.可以用户确定输入的位数
  3.保证当用户输入的密码位数小于用户选择的字符种类数时,密码的种类不能重复。如果用户选择4种字符类型,但是要求的位数是3位,那么输出的密码,字符的种类不能重复。
  遇到的重难点:
  1.要求3的实现,原来用的是switch,但是这是一个很错误的想法,switch的嵌套switch,写的很乱,最后想到了一种解决方法。用for循环+标记法来实现,OK!
  2.随机问题,原来我用的是C语言种的种子随机,结果发现,产生的密码是以秒为单位的,一秒之内的密码都一样,我就用了OC中的arc4random进行随机,也不需要种种子,比较爽!

  头文件如下:

#import <Foundation/Foundation.h>


@interface PWCreate : NSObject {

}

-(char)charAtIndex:(int)index;
-(unsigned int)randMaked;
-(char)upper;
-(char)lower;
-(char)number;
-(char)special;
-(NSString*)Creat:(int)switchSum:(int)count;
@end

实现代码:

#import "PWCreate.h"


@implementation PWCreate
-(unsigned int)randMaked
{
	return arc4random();
}
-(char)upper
{	
	return 65 + [self randMaked] % 26;
}
-(char)lower
{
	return 97+[self randMaked]%26;
}
-(char)number
{
	return 48+[self randMaked]%10;
}
-(char)special;
{
	char a[]="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
	return a[[self randMaked]%32];
}
-(char)charAtIndex:(int)index
{
	switch (index) {
		case 0:
			return [self upper];
			break;
		case 1:
			return [self lower];
			break;
		case 2:
			return [self number];
			break;
		case 3:
			return [self special];
			break;
	}
}
-(NSString*)Creat:(int)switchSum:(int)count
{
	int location,i,j; //记录随机的位置用
	BOOL flag[4]={0,0,0,0}; //标记位置是否用
	int switchSumFlaged=0;   //判断是否和switchSum一样
	BOOL flagAll = NO;   //是否每个选择过的值都有值
	char ch;
	NSMutableString* str=[[NSMutableString alloc] initWithCapacity:10];
	for(i=0,j=0;j<count;i++)
	{
		if (flagAll) {
			location=[self randMaked]%4;
			if((1<<location) & switchSum)
			{
				ch=[self charAtIndex:location];
				//printf("1.%c\n",ch);
				[str appendFormat:@"%c",ch];
				j++;
			}
		}
		else {
			location=[self randMaked]%4;
			if(((1<<location)&switchSum) && !flag[location])
			{
				flag[location]=YES;
				switchSumFlaged += (1<<location);
				if (switchSum == switchSumFlaged) {
					flagAll = YES;
				}
				ch=[self charAtIndex:location];
				//printf("2.%c\n",ch);
				[str appendFormat:@"%c",ch];
				j++;
			}
		}
	}
	NSString* s2=[NSString stringWithString:str];
	[str release];
	return s2;
}
@end

ios02_关闭UITextField的键盘

  今天遇到一个问题,就是如何关闭UITextField键盘的?
  下面是关闭键盘的步骤:
  1.成为委托,实现UITextFieldDelegate协议。
  2.重写textFieldShouldReturn:方法,放弃首要的响应者,(要是不放弃,首要响应者是返回上一次的键盘模式)。
  下面是大致实现的代码:

{//viewDidLoad中的一段代码
	rect=CGRectMake(215, 55, 95, 25);
	UITextField* tf=[[UITextField alloc] initWithFrame:rect];
	tf.textAlignment=UITextAlignmentCenter;
	tf.textColor=[UIColor redColor];
	tf.backgroundColor=[UIColor whiteColor];
	tf.tag=1000;
	tf.font=[UIFont fontWithName:@"Arial" size:23];
	tf.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
	tf.autocorrectionType = UITextAutocorrectionTypeYes;
	tf.returnKeyType = UIReturnKeyDone;
	tf.clearButtonMode = UITextFieldViewModeWhileEditing;
	tf.delegate = self;
	[self.view addSubview:tf];
	tf.userInteractionEnabled = YES;
	[tf release];
}
//实现重写了textFieldShouldReturn:方法
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
	[textField resignFirstResponder];
	return YES;
}

文本其他的一些属性:
  一、UITextField类实现了UITextInputTrait协议,该协议提供了7个属性,来定义字段处理文本输入的方式:
@property(nonatomic) UITextAutocapitalizationType autocapitalizationType;
// default is UITextAutocapitalizationTypeSentences定义文本自动大写样式,分为句子大写、单词大写、全部大写、无大写四种方式
@property(nonatomic) UITextAutocorrectionType autocorrectionType;
// default is UITextAutocorrectionTypeDefault是否服从iPhone的自动更正特性
@property(nonatomic) UIKeyboardType keyboardType;
// default is UIKeyboardTypeDefault首次出现时的界面,默认是字母的,可以调有数字的
@property(nonatomic) UIKeyboardAppearance keyboardAppearance;
// default is UIKeyboardAppearanceDefault出现的样式:默认和警告面板,两种样式
@property(nonatomic) UIReturnKeyType returnKeyType;
// default is UIReturnKeyDefault (See note under UIReturnKeyType enum)设定Return键上的文本
@property(nonatomic) BOOL enablesReturnKeyAutomatically;
// default is NO (when YES, will automatically disable return key when text widget has zero-length contents, and will automatically enable when text widget has non-zero-length contents)没有文本时,是否控制Return键?YES激活
@property(nonatomic,getter=isSecureTextEntry) BOOL secureTextEntry;
// default is NO文本隐藏,设置密码的时候用的
  二、其他的一些特性
borderStyle可以控制周围显示的类型
clearButtonMode来指定以什么样的形式显示“清除”按钮。

ios01_字符串操作

一、字符串的操作
1.构建字符串
常用的字符串方法:stringWithFormat
字符串的附加(创建新的字符串):stringByAppendingString、stringByAppendingFormat
2.长度与索引字符
.length方法返回长度、characterAtIndex:(int)index返回索引字符
3.与C字符串相互转换
OC对象–>C:UTF8String、cStringUsingEncoding:NSUTF8StringEncoding
C–>OC对象:stringWithCString:(cstring) encoding:NSUTF8StringEncoding
4.将字符串写入文件和从文件读取字符串
NSString *path=[NSHomeDirectory() stringByAppendingPathComonent:”路径”]
myString writeToFile:path stomically:YES encoding:NSUTF8StringEncoding error:&error方法,成功YES,失败NO。

NSString *str=[NSString stringWithContentOfFile:path encoding:NSUTF8StringEncoding error:&error];

5.字符串分割成数组
componentsSeparatedByString:分隔符
6.提取字符串
NSString substringToIndex(<)/substringFromIndex(>=)
NSRange r;
r.location=4;
r.length=2;
用substringWithRange:r
7.搜索替换字符串
NSRange=rangeOfString:”搜索内容”
stringByReplacingCharactersInRange:(NSRange位置) withString:(NSString替换内容)
替换所有:stringByReplacingOccurrencesOfString:(NSString找到) withString:(NSString替换成)
8.改变大小写
uppercaseString//全部大写
lowercaseString//全部小写
capitalizedString//首字母大写
9.检查测试字符串
isEqualToString 相等?
hasPrefix 有前缀?
hasSuffix 有后缀?
10.从字符串中提取数字
intValue/boolValue/floatValue/doubleValue
11.可变字符串
11.1给字符串分配容量
NSMutableString *String = [NSMutableString stringWithCapacity:40];

11.2在已有字符串后面添加字符
NSMutableString *String1 = [[NSMutableString alloc] initWithString:@”This is a NSMutableString”];
[String1 appendFormat:[NSString stringWithFormat:@”, I will be adding some character”]];
NSLog(@”String1:%@”,String1);

11.3在已有字符串中按照所给出范围和长度删除字符
NSMutableString *String1 = [[NSMutableString alloc] initWithString:@”This is a NSMutableString”];
[String1 deleteCharactersInRange:NSMakeRange(0, 5)];
NSLog(@”String1:%@”,String1);
11.4在已有字符串后面在所指定的位置中插入给出的字符串
//insertString: atIndex:
NSMutableString *String1 = [[NSMutableString alloc] initWithString:@”This is a NSMutableString”];
[String1 insertString:@”Hi! ” atIndex:0];
NSLog(@”String1:%@”,String1);
11.5将已有的空符串换成其它的字符串
//setString:
NSMutableString *String1 = [[NSMutableString alloc] initWithString:@”This is a NSMutableString”];
[String1 setString:@”Hello Word!”];
NSLog(@”String1:%@”,String1);
11.6按照所给出的范围,和字符串替换的原有的字符
//-setString:
NSMutableString *String1 = [[NSMutableString alloc] initWithString:@”This is a NSMutableString”];
[String1 replaceCharactersInRange:NSMakeRange(0, 4) withString:@”That”];
NSLog(@”String1:%@”,String1);