2010-02-12 26 views
58

Có cách nào để triển khai UISwitch với đồ họa tùy chỉnh cho các trạng thái chuyển đổi không? Hoặc thay thế theo cách khác, một UIButton với chức năng UISwitch?iPhone UIButton với chức năng UISwitch

+5

Ai bình chọn để đóng câu hỏi này như là một bản sao chính xác, ít nhất bạn nên cung cấp một bình luận giải thích mà gửi nó là một bản sao của. – Jasarien

Trả lời

99

UIButton đã hỗ trợ chức năng "chuyển đổi".

Chỉ cần đặt hình ảnh khác trong Trình tạo giao diện cho "Cấu hình nhà nước được chọn" và sử dụng thuộc tính selected của UIButton để chuyển trạng thái của nó.

+0

Nó trở lại bình thường sau khi chạm/chọn. Đây là những gì tôi đã làm với IB. \t [favButton setImage: favOff forState: UIControlStateNormal]; \t [favButton setImage: favOn forState: UIControlStateHighlighted]; \t [favButton setImage: favOn forState: UIControlStateSelected]; \t [favButton setBackgroundColor: [UIColor clearColor]]; \t \t [self.view addSubview: favButton]; – scud

+3

Ok "setSelected" là tài sản tôi đang tìm kiếm, nhờ – scud

+0

Các UISwitch độc đáo làm thay đổi trạng thái của nó. Tôi tự hỏi làm thế nào để animate một trạng thái thay đổi UIButton. Bất kỳ ý tưởng? – radven

12

thiết lập các hình ảnh hiển thị trên nhà nước được lựa chọn:

[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected]; 

và sau đó trên cảm ứng bên trong chọn, hãy đặt:

button.selected = YES; 

nếu bạn muốn điều này để hủy bỏ lựa chọn của một nút khác, hãy đặt:

otherButton.selected = NO; 
7

Để xây dựng những gì PGB và nurne đã nói ở trên, sau khi bạn đặt trạng thái và gắn một sele ctor (phương thức sự kiện), bạn sẽ muốn đặt mã này vào bộ chọn đó.

- (IBAction)cost:(id)sender 
{ 
    //Toggle current state and save 
    self.buttonTest.selected = !self.buttonTest.selected; 

    /** 
    The rest of your method goes here. 
    */ 
} 
3

Đối với lập trình nghiêng:

-(void) addToggleButton { 
    CGRect aframe = CGRectMake(0,0,100,100); 

    UIImage *selectedImage = [UIImage imageNamed:@"selected"]; 
    UIImage *unselectedImage = [UIImage imageNamed:@"unselected"]; 

    self.toggleUIButton = [[UIButton alloc] initWithFrame:aframe]; 
    [self.toggleUIButton setImage:unselectedImage forState:UIControlStateNormal]; 
    [self.toggleUIButton setImage:selectedImage forState:UIControlStateSelected]; 
    [self.toggleUIButton addTarget:self 
          action:@selector(clickToggle:) 
        forControlEvents:UIControlEventTouchUpInside]; 
    [self addSubview:self.toggleUIButton]; 
} 

-(void) clickToggle:(id) sender { 
    BOOL isSelected = [(UIButton *)sender isSelected]; 
    [(UIButton *) sender setSelected:!isSelected]; 
} 
Các vấn đề liên quan