Итак, у меня есть кнопка с настраиваемым uiview, содержащим uiimageview.

UIButton *myButton = [[UIButton alloc] init];
myButton.frame = CGRectMake(0, 0, 29, 29);

UIView  *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 29, 29)];


UIImage *myImage = [UIImage imageNamed:@"sexy-pic-of-me"];
UIImageView *myImageView = [[UIImageView alloc] initWithImage:myImage];
myImageView.frame = CGRectMake(0,0,29,29);

[myView addSubview:myImageView];
[myButton addSubview:myView];

[self.view addSubview: myButton];

Мое изображение размыто, независимо от того, насколько увеличился или уменьшился размер. Что я здесь делаю не так?

0
marshy101 1 Апр 2014 в 00:57
Вероятно, потому, что размеры вашего изображения не имеют отношения 1: 1, и потому что оно слишком большое или маленькое.
 – 
maelswarm
1 Апр 2014 в 01:01
Каковы исходные размеры вашего изображения?
 – 
Stonz2
1 Апр 2014 в 01:04
Размер изображения 29X29
 – 
marshy101
1 Апр 2014 в 01:18

2 ответа

Лучший ответ

Другие люди упомянули две возможные причины нечеткости

  • размер изображения не соответствует размеру кадра, что приводит к масштабированию
  • соотношение сторон изображения корректируется из-за режима содержимого

Третья возможная причина - использование в кадре нечетных чисел. По моему опыту, если center.x и / или center.y в UIView не целое число, то возникает нечеткость. Например, если вы установите рамку как

someView.frame = CGRect( 100, 100, 29, 29 );

Тогда все становится нечетким, потому что центральная точка указанного вида будет CGPoint( 114.5, 114.5 ). Эта проблема в основном наблюдается на устройствах без сетчатки глаза. Устройства Retina имеют два пикселя на точку, поэтому координаты в половину точки допустимы, но другие координаты вне сетки могут по-прежнему вызывать нечеткость.

0
user3386109 1 Апр 2014 в 01:51

Попробуйте установить режим содержимого, например:

myImageView.contentMode = UIViewContentModeScaleAspectFit;

Подробнее о режимах содержимого: https : //developer.apple.com/library/ios/documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/c/tdef/UIViewContentMode

UIViewContentMode
Options to specify how a view adjusts its content when its size changes.

typedef enum {
   UIViewContentModeScaleToFill,
   UIViewContentModeScaleAspectFit,
   UIViewContentModeScaleAspectFill,
   UIViewContentModeRedraw,
   UIViewContentModeCenter,
   UIViewContentModeTop,
   UIViewContentModeBottom,
   UIViewContentModeLeft,
   UIViewContentModeRight,
   UIViewContentModeTopLeft,
   UIViewContentModeTopRight,
   UIViewContentModeBottomLeft,
   UIViewContentModeBottomRight,
} UIViewContentMode;
1
Kamil Tustanowski 1 Апр 2014 в 01:05