iOS tips 에세이

9371 단어

정의할 때 사용하는 strong weak copy assign 등

/**
 copy : NSString\NSMutableString\block
 weak :  \UI 
 strong :  OC 
 assign :  (int\float)\ \ 
 */

프록시 (delegate) 는 weak, delegate를 사용합니다. @property(nonatomic,weak) id delegate;bool 형식은 assign을 사용합니다. @property(nonatomic,assign) bool xxx ;NSString 은 copy 를 사용합니다. @property(nonatomic,copy) NSString * xxx;UI 컨트롤은 weak:weak으로 약한 바늘이고,alloc를 사용할 때 강한 바늘로 그를 가리켜야 합니다.예를 들어, (@property(nonatomic, weak) UIlable *xxx,    UILable *xxx = [[UILable alloc] init];    [self.contentView addSubview:xxx];    self.xxx = xxx;)NSArray와 NSMutableArray는 strong, @property(nonatomic, strong) NSArray * xxx를 사용합니다.대상 형식 (class) 은strong을 사용합니다.CGRect는 assign,readonly를 사용합니다.@property(nonatomic,assign,readonly) CGRect xxx ;NSOperationQueue는 strong을 사용합니다. @property(nonatomic,strong) NSOperationQueue * xxx ;——————————————————————————————————————————————————————————————————————————————

하위 컨트롤 추가


[self.contentView addSubview:xxxView]——————————————————————————————————————————————————————————————————————————————

지연 애니메이션 (gcd 구현)


지연 애니메이션 dispatchafter(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{        <#code to be executed after a specified delay#>});-(void) awake From Nib {}xib 파일을 불러온 후에 실행하는 방법-------------------------------------------------------------------------------------------

주 화면 너비 가져오기


[UIScreen mainScreen].bounds.size.width; 메인 화면의 넓이. ----------------------------------------------------------------

xib 컨트롤 가져오기


xib는class에 선을 끌면 @interface MJAPPCell () @end () --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

메모 사전 처리 테스트


#define MJLog(…) NSLog(__VA_ARGS__)——————————————————————————————————————————————————————————————————————————————

UIApplication


UIApplication에는 기능이 매우 강한 OpenURL이 있다. 방법-(BOOL) OpenURL: (NSURL*) URL;openURL: 방법의 일부 기능은 UIApplication*app = [UIApplication sharedApplication]에 전화하는 것입니다.[app openURL:[NSURL URLWithString:@"tel://10086"];문자 보내기 [app openURL:[NSURL URL WithString:@"sms://10086"];메일 보내기 [app openURL:[NSURL URL WithString:@"mailto://[email protected]"];웹 에셋 열기 [app openURL:[NSURL URL WithString:@"http://ios.itcast.cn]; 다른 앱 프로그램 열기
———————————————————————————————————————————————————————

UISwitch 및 텍스트 상자 변경 수신


1. UISwitch* UISwitch는 UIControl에서 계승되기 때문에 UIButton처럼 일부 사건을 감청할 수 있다. 예를 들어 상태변경 사건* UISwitch는 드래그를 통해 상태변경을 감청할 수 있다. * UISwitch는addTarget를 통해 감청할 수 있다.방법 감청 상태 변경 - (void)addTarget: (id) target action: (SEL) action for Control Events: (UIControl Events) control Events;//여기서 control Events 매개 변수는 다음과 같습니다. UIControl EventValueChanged(값 변경 이벤트)
/**
*   switch , 
*/
- (IBAction)rememberPwdChanged {
    if (self.rememberPwdSwitch.isOn == NO) {    //on getter isOn,  :
//        self.autoLoginSwitch.on = NO;           //@property(nonatomic,getter=isOn) BOOL on;
        [self.autoLoginSwitch setOn:NO animated:YES];   //  duang
    }
}
- (IBAction)autoLoginChanged {
    if (self.autoLoginSwitch.isOn) {
//        self.rememberPwdSwitch.on = YES;
        [self.rememberPwdSwitch setOn:YES animated:YES];
    }
}

2. 텍스트 상자의 텍스트 변경을 감청* 한 텍스트 입력 상자의 텍스트 변경을 감청할 때 텍스트 입력 상자는 UITExtFieldTextDidChangeNotification 알림*을 감청함으로써 텍스트 입력 상자의 텍스트 변경을 감청합니다 [[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange)name: UITExtFieldTextDidChangeNotification object:textField]//textField 텍스트 입력 상자의 텍스트가 바뀌면self의 textChange 방법을 호출합니다
———————————————————————————————————————————————————————

키보드 숨기기


방법1://1, 키보드 [[[UIApplication sharedApplication] keyWindow] endEditing: YES]를 닫습니다.
    //[self.view endEditing:YES];
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.view endEditing:YES];
}

 
방법2://2, 키보드 닫기
    //[self.xxx resignFirstResponder];//누가 호출한 키보드, 누가 종료(첫 번째 응답자가 아닌)[[self findFirst Responder Beneath View:self] resign First Responder];
- (IBAction)endKeyboard;    // 

- (IBAction)endKeyboard {
     [[[UIApplication sharedApplication] keyWindow] endEditing:YES];
}

마찬가지로 키보드를 호출하고 싶을 때 공간을 첫 번째 응답자로 만들기(becomeFirstResponder)
[self.xxx becomeFirstResponder];
———————————————————————————————————————————————————————

테이블 뷰 분할선 숨기기


//tableview 분할선 숨기기self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
———————————————————————————————————————————————————————

아카이브 가져오기 파일 경로


//파일 경로 #define tao Contacts Filepath [NSSearch Path ForDirectories InDomains(NSDocument Directory, NSUser Domain Mask, YES) lastObject] stringBy Appending Path Component: @ "contacts.data"]
———————————————————————————————————————————————————————

Modal 사용


1. 점프:
    [self presentViewController:nav animated:YES completion:^{
        NSLog(@" TwoViewController .......");
    }];

2. 점프:
[self dismissViewControllerAnimated:YES completion:^{
        NSLog(@" TwoViewController....");
    }];

———————————————————————————————————————————————————————

네트워크 액세스 공통 코드 형식

NSURL *url = nil;
    NSURLRequest *requst = [NSURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:10.0f];
    //  , , 
    [NSURLConnection sendAsynchronousRequest:requst queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
       
        // data 
        //  data 
        //  
        dispatch_async(dispatch_get_main_queue(), ^{
            //  UI
        });
    }];

———————————————————————————————————————————————————————

버전 지정


[[UIDevice currentDevice].systemVersion floatValue] >= 7.0;
———————————————————————————————————————————————————————

버튼 크기를 버튼 글꼴로 계산하는 크기

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIButton *writePravateMessage = [[UIButton alloc] init];
    [writePravateMessage setTitle:@" " forState:UIControlStateNormal];
    [writePravateMessage setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];
    [writePravateMessage setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
    writePravateMessage.titleLabel.font = [UIFont systemFontOfSize:15];
    writePravateMessage.backgroundColor = [UIColor greenColor];
    
    //   
    //writePravateMessage.size = [writePravateMessage.currentTitle 
                                    sizeWithFont:writePravateMessage.titleLabel.font];
   
     writePravateMessage.size = [self 
                                sizeWithFontOrAttributes:writePravateMessage.titleLabel.font 
                                buttonVc:writePravateMessage.currentTitle];
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 
                                                initWithCustomView:writePravateMessage];
}

/**
 iOS7 sizeWithAttributes, sizeWithFont
 */
- (CGSize) sizeWithFontOrAttributes:(UIFont *) font buttonVc:(id) obj{
    if (iOS7) {
        NSDictionary *fontWithAttributes = @{NSFontAttributeName:font};
        return [obj sizeWithAttributes:fontWithAttributes];
    } else {
        return [obj sizeWithFont:font];
    }
}

———————————————————————————————————————————————————————

현재 버전


NSString *lastVersion = KCFBundleVersionKey;
———————————————————————————————————————————————————————

UIlable 디스플레이 경계


1. 프레임 추가QuartzCore.framework  2. 도입 헤드 파일 #import "QuartzCore/QuartzCore.h"3.uilable.layer.borderColor = [UIColor lightGrayColor].CGColor;  uilable.layer.borderWidth = 2.0;
———————————————————————————————————————————————————————

하나의 컨트롤러가 육안으로 보이지 않는데, 어떤 가능성이 있는가


/*하나의 컨트롤이 육안으로 보이지 않으니 어떤 가능성이 있는가.이 컨트롤을 실례화하지 않았습니다. 2.사이즈를 설정하지 않았습니다. 3.컨트롤의 색깔은 아버지 컨트롤의 배경색과 같다.투명도 알파 <= 0.01 5.hidden = YES 6.부모 컨트롤에 추가되지 않았습니다. 7.다른 컨트롤에 가려졌습니다.위치가 틀리다부모 컨트롤에 이상 상황이 발생했습니다 10.특수한 경우* UIImageView에 이미지 속성이 설정되어 있지 않거나 설정된 이미지 이름이 맞지 않음* UILAbel에 텍스트가 설정되어 있지 않거나 텍스트 색상이 부모 컨트롤의 배경색과 같음* UITExtField에 텍스트가 설정되어 있지 않거나 테두리 스타일이 설정되어 있지 않거나borderStyle * UIPage Control에 전체 페이지 수가 설정되어 있지 않으며 작은 원점이 표시되지 않음* UIButton 내부 이미지 뷰와 title Label의 프레임이 변경되었습니다.또는 imageView와 titleLabel에 내용이 없거나*......컨트롤에 대한 조언 추가하기 (디버깅 기술): 1.배경색과 크기를 설정하는 것이 좋습니다.컨트롤 색상은 가능한 한 부모 컨트롤의 배경색과 같지 않습니다*/
———————————————————————————————————————————————————————

프로그램 시작 시 자동으로 불러오는 그림


/* 1.프로그램 시작은Default라는 그림을 자동으로 불러옵니다. 1 > 3.5inch 비retain 화면:Default.png 2> 3.5inch retina 화면:[email protected]> 4.0inch retain 화면:[email protected] 2.프로그램이 시작될 때 자동으로 불러오는 그림만 4inch retina에서 자동으로 찾을 수 있습니다 [email protected] */
———————————————————————————————————————————————————————

프로그램이 UINavigation Controller를 설정했습니다. scrollview 안의 보기는 모두 아래로 이동하는 픽셀 해결 방법이 있습니다.


//스크롤 보기 삽입self를 자동으로 조정합니다.automaticallyAdjustsScrollViewInsets = NO;

좋은 웹페이지 즐겨찾기