如何使用pinchgesturerecognizer在UIView上显示固定大小的文本?

时间:2012-06-05 11:54:39

标签: ios uiview uilabel uigesturerecognizer xcode4.3

我有一个视图(myView),并且由于myView上的显示文本,我在myView上创建了一些标签。我在myView上应用了pinchgesturerecognizer。它工作得很好。我的问题是当我捏在myView上时,标签文本的大小会根据捏合而增加或减少。如果你捏(放大)myView,标签文字的大小非常小,所以我们看不到文字。如果你捏(缩小)myView,标签的文字大小很大。

所以无论你放大或缩小myView,我都想修改标签文字的大小。我试过但我没有得到答案。我也使用setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth,但我没有得到它。我不知道如何使用它。请帮我。提前谢谢。

我的代码是:

ViewController.m

   - (void)viewDidLoad
    {
        MyView *myView = [[MyView  alloc] initWithFrame:CGRectMake(0, 100, 200, 100)];
    [self.view addSubview:myView];
        [super viewDidLoad];
    UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scalePiece:)];
        [pinchGesture setDelegate:self];
        [myView addGestureRecognizer:pinchGesture];
        [pinchGesture release];
    }

- (void)scalePiece:(UIPinchGestureRecognizer *)gestureRecognizer
{

    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
        [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
           //[gestureRecognizer setScale:1];


    }
}

MyView.m

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
label1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 35, 20)];
label1.font = [UIFont fontWithName:@"Helvetica-Bold" size:10];
label1.text = @"label1";
[self addSubview:label1];

label2 = [[UILabel alloc] initWithFrame:CGRectMake(40, 0, 35, 20)];
label2.font = [UIFont fontWithName:@"Helvetica-Bold" size:10];
label2.text = @"label2";
[self addSubview:label2];



label3 = [[UILabel alloc] initWithFrame:CGRectMake(0, 40, 35, 20)];
label3.font = [UIFont fontWithName:@"Helvetica-Bold" size:10];
label3.text = @"label1";
[self addSubview:label3];

label4 = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 35, 20)];
label4.font = [UIFont fontWithName:@"Helvetica-Bold" size:10];
label4.text = @"label4";
[self addSubview:label4];
    }
    return self;
}

我想修复label1,label2,label3,label4的文本。

1 个答案:

答案 0 :(得分:0)

听起来你正试图放大一些物品而不是其他物品。有两种方法可以解决这个问题。两者都不是很简单。您可以将标签分解为自己的视图,并在另一个视图上的捏合手势后手动重新定位它们。或者您可以将它们保留在此视图中,并在捏合后手动重新缩放并定位它们。无论哪种方式,你都必须做一些数学计算。