如何在UIScrollView的中心按下按钮?

时间:2015-06-02 05:46:06

标签: ios objective-c uiscrollview

我在滚动视图中生成了多个按钮,一个在main.storyboard上有约束的滚动视图,因此它的宽度在不同的iphone上发生变化。我不能把我的按钮放到中心。这是我的代码。

@synthesize table,scroll;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.  
img = @[@"Shirley-Stevens.jpg"];

NSUInteger i;
int buttonWidth=50;
int buttonHeight=50;
int space = 50;
//    int xCoord= 100;// (scroll.frame.size.width/2) - buttonWidth - space;
//    int Xcoord2= 200;//(scroll.frame.size.width/2) + buttonWidth + space;

int xCoord = (scroll.contentSize.width/2) + buttonWidth + space + buttonWidth + space;
int Xcoord2= (scroll.contentSize.width/2) + buttonWidth + space;
int yCoord=0;
int buffer = 10;
for (i = 1; i <= 100; i++)
{
    UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [aButton setBackgroundImage:[UIImage imageNamed:[img objectAtIndex:0]]forState:UIControlStateNormal];
    aButton.frame     = CGRectMake(xCoord, yCoord,buttonWidth,buttonHeight );
    [aButton addTarget:self action:@selector(whatever:) forControlEvents:UIControlEventTouchUpInside];
    [scroll addSubview:aButton];

    UIButton *bButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [bButton setBackgroundImage:[UIImage imageNamed:[img objectAtIndex:0]]forState:UIControlStateNormal];
    bButton.frame     = CGRectMake(Xcoord2, yCoord,buttonWidth,buttonHeight );
    [bButton addTarget:self action:@selector(whatever:) forControlEvents:UIControlEventTouchUpInside];
    [scroll addSubview:bButton];

    yCoord += buttonHeight + buffer;
}
[scroll setContentSize:CGSizeMake(300, yCoord)];
}

- (IBAction)whatever:(UIButton *)sender {
NSLog(@"Button");
}

3 个答案:

答案 0 :(得分:1)

这是我的Code Now工作正常,基本上问题是,在scrollview更新参数之前调用viewDidLoad。因此,练习scrollview的最佳方法是viewDidAppear。

@synthesize table,scroll;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
img = @[@"Shirley-Stevens.jpg",
         @"Shirley-Stevens.jpg"];
}

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSUInteger i;
int buttonWidth=50;
int buttonHeight=50;
int space = 50;
int xCoord  = (scroll.frame.size.width/2) - buttonWidth - space;
int Xcoord2 = (scroll.frame.size.width/2) + space;
int yCoord=0;
int buffer = 10;
for (i = 1; i <= 100; i++)
{
    UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [aButton setBackgroundImage:[UIImage imageNamed:[img objectAtIndex:0]]forState:UIControlStateNormal];
    aButton.frame     = CGRectMake(xCoord, yCoord,buttonWidth,buttonHeight );
    [aButton addTarget:self action:@selector(whatever:) forControlEvents:UIControlEventTouchUpInside];
    [scroll addSubview:aButton];

    UIButton *bButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [bButton setBackgroundImage:[UIImage imageNamed:[img objectAtIndex:0]]forState:UIControlStateNormal];
    bButton.frame     = CGRectMake(Xcoord2, yCoord,buttonWidth,buttonHeight );
    [bButton addTarget:self action:@selector(whatever:) forControlEvents:UIControlEventTouchUpInside];
    [scroll addSubview:bButton];

    yCoord += buttonHeight + buffer;
}
[scroll setContentSize:CGSizeMake(300, yCoord)];
}


- (IBAction)whatever:(UIButton *)sender {
NSLog(@"Button");
}

答案 1 :(得分:0)

设置center的{​​{1}}点和UIButton

例如:将中心点设置为宽度/ 2&amp; frame的高度/ 2。

答案 2 :(得分:0)

我认为你应该只在两行以下进行更改 -

假设您需要两个中心按钮,中间有空隙。

int xCoord = (scroll.contentSize.width/2) - (space/2) - buttonWidth;
int Xcoord2= (scroll.contentSize.width/2)  + (space/2);

希望这会对你有所帮助。