【问题标题】:UIImageView not redrawingUIImageView 不重绘
【发布时间】:2014-09-20 07:30:11
【问题描述】:

我正在使用代码通过将 UIImageView 的宽度减小到其原始值的 0.5 来调整其大小。 代码是

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.allisonHall.newWidth = .5;
    self.allisonHall.frame = CGRectMake(self.allisonHall.frame.origin.x,
                                        self.allisonHall.frame.origin.y,
                                        self.allisonHall.frame.size.width*self.allisonHall.newWidth,
                                        self.allisonHall.frame.size.height);
    self.allisonHall.contentMode = UIViewContentModeLeft;
    self.allisonHall.clipsToBounds = YES;
    NSLog(@"%f",self.allisonHall.frame.size.width);
}

NSLog 的结果是 140, .5*280 符合预期。 但是,在视图中 UIImageView 保持其原始宽度。 UIImageView 链接为

@property (weak, nonatomic) IBOutlet XYZdiningHall *allisonHall;

在视图控制器的 .h 文件中,其中 XYZdiningHall 是 UIImageView 的子类

UIImageView 的框架是否应该根据此代码进行更改,还是我需要调用另一个方法来触发更改?

【问题讨论】:

  • 您的调整大小是微不足道的(它不依赖于任何变量)。如果你的 ImageView 是一个 IBOutlet,为什么不在故事板中改变它的大小呢?如果您坚持以编程方式执行此操作,则在viewDidLoad 之后可能会发生一些自动调整大小,因此您可以尝试将此代码放入viewDidAppear:。不要忘记致电[super viewDidAppear:]
  • 抱歉,size 变量不是微不足道的——我加入了一个幻数以使问题更加明确。调整大小因子由时间变量确定。但是,您的修复确实有效。非常感谢!
  • 没问题,这种事情时有发生。尽量不要在 viewDidAppear 之前调整界面生成器中的任何内容。

标签: ios cocoa-touch uiimageview


【解决方案1】:

你需要使用 UIViewContentModeLeft 吗?您可以使用 UIViewContentModeScaleAspectFit 或 UIViewContentModeScaleAspectFill 并且图像将被重绘(纵横比模式与图像视图边界相关,Left 不是)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多