调整UIView的大小

7

我正在尝试调整Tapjoy SDK中的UIView实例的大小。

以下是代码:

- (UIView*)showFeaturedAppFullScreenAd:(NSString*)adURL withFrame:(CGRect)frame
{
    UIView *fullScreenAdView = nil;

    [self moveViewToFront];

    [self.view setAlpha:1];

    fullScreenAdView = [TJCFeaturedAppViewHandler showFullScreenAdWithURL:adURL withFrame:frame];
    [self.view addSubview:fullScreenAdView];

    return fullScreenAdView;
}

我尝试在上述方法中添加自己的setter方法:
fullScreenAdView.frame = CGRectOffset(fullScreenAdView.frame, 50, 500);

但是当我运行它时,对于tapjoy广告没有影响。
我的问题是:我尝试调整此实例的大小,使其不再占据设备窗口的100%,而是占据(假设)70%。
我有一些想法,但它们很模糊(例如编写fullScreenAdView = [mainScreen * 0.7f),但我希望有人有更具体的想法。
编辑:这是我的情况的超级高科技图片。 http://i207.photobucket.com/albums/bb289/teh_Mac/tjAd-1.jpg 这是我迄今为止想出的原型方法:
fullScreenAdView.frame = CGRectMake(0,0, [mainScreen * 0.7f], [mainScreen * 0.7f];

1
为什么不使用“fullsScreenAdView.frame = self.view.bounds”? - CodaFi
那怎么能让我将UIView实例“缩小”到我想要的大小呢? - GPP
你说的缩小是什么意思?你的问题中提到你想让广告覆盖整个屏幕。如果要缩小它,难道不应该使用CGRectMake而不是CGRectOffset吗?使用CGRectOffset似乎很奇怪。 - CodaFi
1
啊!CGRectMake有4个参数。前两个分别设置原点的x和y。例如,原点(0,0)是屏幕左上角,然后所有内容都会向右和向下延伸。最后两个参数是高度和宽度。如果你想要动画效果,把CGRectMake的变化放在[UIView animateWithDuration:animations];块中。 - CodaFi
这正是我正在寻找的。然而,问题在于我要优化iPhone iOS 4.0+和iPad,它们的分辨率都不同。因此,我喜欢采用百分比的方式。 - GPP
显示剩余2条评论
1个回答

5
为什么不使用CGRectMake并将其设置为父视图的百分比?
float percentage = .7f;  //whatever you like
int xPosition = fullScreenAdView.superview.frame.size.width * ((1 - percentage) / 2);
int yPosition = fullScreenAdView.superview.frame.size.height * ((1 - percentage) / 2);

int width = fullScreenAdView.superview.frame.size.width * (1 - percentage);
int height = fullScreenAdView.superview.frame.size.height * (1 - percentage);

fullScreenAdView.frame = CGRectMake(xPosition, yPosition, width, height);

我是凭借自己的经验写下这段话的,但我认为稍加修改就可以达到你想要的效果。


2
嘿,感谢您提供的精彩答案!不幸的是,在测试了这段代码之后,我认为我列出的方法并不负责帧比例。这是因为我在代码中更上面测试了另一种方法:
  • (UIView*)showFeaturedAppFullScreenAdWithURL:(NSString*)adURL { return [self showFeaturedAppFullScreenAd:adURL withFrame:self.view.frame]; //用frame替换bounds }
它改变了UIView,但我对我在问题中列出的方法所做的修改没有任何影响;再次重申,我通过注释fullScreenAdView.frame进行了测试....但它没有任何影响。
- GPP
1
完全对我有用。我以为只需要设置边界,但实际上我缺少的是框架! - lordB8r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接