Est-il possible d'avoir un UISegmentedControl span deux lignes sur l'iPhone? J'ai vu cela dans quelques applications, mais je n'ai pas trouvé ce dont j'avais besoin dans la documentation. Peut-être que c'est un UIButton personnalisé conçu pour ressembler à UISegmentedControl.Deux lignes UISegmentedControl
Répondre
Il n'est pas possible d'utiliser le standard UISegmentedControl
- vous devrez le dessiner seul.
Je cherchais aussi cela. Je voulais même que la deuxième rangée ressemble à une partie de la première, plutôt à une grille. Impossible de trouver un second UISegmentedControl et de le combiner avec un autre astuce pour prendre en charge les arêtes arrondies inutiles.
Dans ma mise en œuvre inherit de UIControl (hérite de UIView), Ajouté 2 UISegmentControls, 2 UIViews rogner les bords et les faire regarder comme un.
Ensuite, je fais quelques ajustements pour redéfinir visuellement les champs de texte au centre.
Facilement déployé horizontalement, et avec un effort minime, une troisième rangée ... pourrait également être ajoutée.
L'en-tête:
// YHSegmentedGridControl.h
#import <UIKit/UIKit.h>
@interface YHSegmentedGridControl : UIControl{
UISegmentedControl *a,*b;
UIView *va,*vb;
}
- (void)setSelectedSegmentIndex:(NSInteger)index;
- (NSInteger)selectedSegmentIndex;
@end
Dans le fichier .m:
// YHSegmentedGridControl.m
// UITestSegment2D
// Created by Yh on 22/04/13.
#import "YHSegmentedGridControl.h"
@implementation YHSegmentedGridControl
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
[self initWithDefaults];
}
return self;
}
Le travail réel:
-(void) initWithDefaults{
a = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects: @"1", @"2", nil]];
b = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects: @"3", @"4", nil]];
float e = 75;
int d = (int)e/7;
[a setFrame:CGRectMake(0, 0, 2*e, e+2*d)];
[b setFrame:CGRectMake(0, -2*d, 2*e, e+2*d)];
[a setContentOffset:CGSizeMake(0, -d) forSegmentAtIndex:0];
[a setContentOffset:CGSizeMake(0, -d) forSegmentAtIndex:1];
[b setContentOffset:CGSizeMake(0, +d) forSegmentAtIndex:0];
[b setContentOffset:CGSizeMake(0, +d) forSegmentAtIndex:1];
[a addTarget:self
action:@selector(pickOne:)
forControlEvents:UIControlEventValueChanged];
[b addTarget:self
action:@selector(pickOne:)
forControlEvents:UIControlEventValueChanged];
va = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 2*e, e)];
vb = [[UIView alloc] initWithFrame:CGRectMake(0, e, 2*e, e)];
[va setClipsToBounds:YES];
[vb setClipsToBounds:YES];
[self setFrame:CGRectMake(0,0,2*e,2*e)];
[va addSubview:a];
[vb addSubview:b];
[self addSubview:va];
[self addSubview:vb];
}
- (void)setSelectedSegmentIndex:(NSInteger)index{
if(index == UISegmentedControlNoSegment){
[a setSelectedSegmentIndex:UISegmentedControlNoSegment];
[b setSelectedSegmentIndex:UISegmentedControlNoSegment];
} else if(index < a.numberOfSegments){
[a setSelectedSegmentIndex:index];
[b setSelectedSegmentIndex:UISegmentedControlNoSegment];
} else if(index < (a.numberOfSegments + b.numberOfSegments)){
[b setSelectedSegmentIndex:(index - a.numberOfSegments)];
[a setSelectedSegmentIndex:UISegmentedControlNoSegment];
}else
NSLog(@"No such segment: index to high");
}
- (NSInteger)selectedSegmentIndex{
if(a.selectedSegmentIndex != UISegmentedControlNoSegment)
return a.selectedSegmentIndex;
else if(b.selectedSegmentIndex != UISegmentedControlNoSegment)
return b.selectedSegmentIndex + a.numberOfSegments;
else
return UISegmentedControlNoSegment;
return 0;
}
- (void)pickOne:(id)sender{
if(sender == a)
[b setSelectedSegmentIndex:UISegmentedControlNoSegment];
if(sender == b)
[a setSelectedSegmentIndex:UISegmentedControlNoSegment];
//notify
[self sendActionsForControlEvents:UIControlEventValueChanged];
}
@end
- 1. UISegmentedControl avec UITableView NSRangeException
- 2. Personnalisation UISegmentedControl
- 3. coutume UISegmentedControl
- 4. UISegmentedControl EXC_BAD_ACCESS
- 5. UISegmentedControl dans l'application Mail
- 6. UISegmentedControl rend UITableView lent/lag?
- 7. Trouver deux lignes consécutives
- 8. Changement textColor dans UISegmentedcontrol
- 9. badgeValue dans UISegmentedControl
- 10. UISegmentedControl, UIToolbar et UINavigationItem
- 11. Flèche UIPopoverController sur UISegmentedControl
- 12. UISegmentedControl sans arrondi?
- 13. UISegmentedControl delegate/Touch Events
- 14. Weird UISegmentedControl Problème!
- 15. UISegmentedControl effet Glow
- 16. UISegmentedControl Best Practice
- 17. Sélection SQL sur deux lignes
- 18. MySQL Joindre sur deux lignes
- 19. Fusionner deux lignes dans SQL
- 20. Javascript - Se connecter deux lignes
- 21. Lignes entre deux entrées d'index?
- 22. Séparer les séparateurs de segment d'un UISegmentedControl
- 23. Modification des vues de UISegmentedControl
- 24. UISegmentedControl comme dans l'application AppStore
- 25. UISegmentedControl image d'arrière-plan personnalisée
- 26. Couleur UISegmentedControl dans un UIToolbar
- 27. Personnalisation des couleurs d'un UISegmentedControl
- 28. UISegmentedControl - comment basculer entre 2 UITableViews
- 29. Lignes de tableau avec deux lignes de texte
- 30. Oracle - différence ou changements entre deux lignes de deux tables