2012-06-19 2 views
0

Я хочу создать представление с 52 квадратами или кнопками (за 52 недели в году на одной странице) с сеткой, но я не знаю, как их выровнять или как я должен поместить их в кадрСоздайте рамку и поместите кнопку внутри рамки в Objective-C

(у вас будет 13 строк и 4 столбца), но если вы попробуете этот код, это не algin: Я не знаю, как создать фрейм, чтобы поместить все кнопки в сторона моего кадра ..

Вот мой код:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
int rows = 13, columns = 4; 

for (int y = 0; y < rows; y++) { 
    for (int x = 0; x < columns; x++) { 
     UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     button.frame = CGRectMake(58 * x, 31 * y, 58, 31); 

     [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
     [self.view addSubview: button]; 

    } 
} 



} 


-(void)buttonPressed:(UIButton *)button 
{ 
NSLog(@"button %u -- frame: %@", button.tag, NSStringFromCGRect(button.frame)); 
} 
+1

Я пробовал свой код, и кнопки выровнены ... Можете ли вы опубликовать изображение того, что у вас есть, и подробно узнать, что вы действительно хотите получить? – NSZombie

+0

@NSZombie благодарит за ответ Я положил картинку –

ответ

4

Вместо того, чтобы добавлять ваши кнопки непосредственно к виду вашего контроллера, создайте подзаголовок, который будет содержать все ваши кнопки. Затем центрируйте это подвью. Вот код, который вы можете использовать:

int rows = 13, columns = 4; 
UIView *buttonView = [[UIView alloc] initWithFrame:CGRectMake(0.f, 0.f, 58*columns, 58*rows)]; 
for (int y = 0; y < rows; y++) { 
    for (int x = 0; x < columns; x++) { 
     UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     button.frame = CGRectMake(58 * x, 31 * y, 58, 31); 

     [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
     [buttonView addSubview: button]; 

    } 
} 

// Center the view which contains your buttons 
CGPoint centerPoint = buttonView.center; 
centerPoint.x = self.view.center.x; 
buttonView.center = centerPoint; 
[self.view addSubview:buttonView]; 

Если вы хотите, чтобы ваши кнопки, чтобы занять весь взгляд, играть с шириной и высотой кнопок (вы использовали 58 и 31).

+0

Спасибо, вы знаете, как я могу использовать квадратную кнопку?, А также как я могу использовать свою кнопку под навигацией, вид на год? большое спасибо! –

+0

Для квадратных кнопок вы должны использовать изображения, это быстрее. Или вы также можете рисовать их с помощью CoreGraphics, но это сложнее, если вы не знаете CoreGraphics. И для вас год бар, вы должны использовать UINavigationController для отображения вашего контроллера. – NSZombie

+0

Спасибо, я пробовал, но я не знаю, как использовать изображение tu, должно ли я сделать что-то вроде этого >>>> UIImageView * imgView = [[UIImageView alloc] initWithFrame: CGRectMake (0.f, 0.f , 70 * столбцов, 70 * строк)]; не могли бы вы помочь мне :) Спасибо заранее! –

1

вы можете использовать Тхи s:

CGPoint center = CGPointMake([self.view bounds].size.width/2.0, [self.view bounds].size.height/2.0);  
[button setCenter:center]; 
0

Записать этот код в AppDelegate.m файла. Просто проверьте это. Я запускаю эту программу, она отлично работает под панелью навигации.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease]; 
    } else { 
     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease]; 
    } 
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 

    navigationController.navigationBar.barStyle = UIBarStyleDefault; 
    //navigationController.navigationBar.hidden = YES; 
    //navigationController.navigationBar.frame = CGRectMake(0, 20, 320, 40); 
    // self.window.rootViewController = self.viewController; 
    [self.window addSubview:navigationController.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
Смежные вопросы