سؤال

انا املك UIImageView الذي يعرض صورة أكبر.يبدو أنها في المنتصف، لكني أرغب في نقل تلك الصورة إلى داخلها UIImageView.نظرت إلى حركني عينة من شركة Apple، لكن لم أتمكن من معرفة كيفية القيام بذلك.يبدو أنهم ليس لديهم حتى UIImageView لذلك.أيه أفكار؟

هل كانت مفيدة؟

المحلول

تم استبدال الإجابة الأصلية بـ CoreAnimation في iOS4.

لذلك كما يقول الإبهام الذهبي:يمكنك القيام بذلك عن طريق الوصول إلى CALayer الخاص بـ UIView.على وجه التحديد محتواه:

من مستندات أبل:المستطيل، في مساحة إحداثيات الوحدة، الذي يحدد جزء محتويات الطبقة الذي يجب استخدامه.متحرك.

نصائح أخرى

وما تحتاج اليه هو شيء مثل (على سبيل المثال تبين أن 30٪ من 30٪ من أعلى الزاوية اليسرى من الصورة الأصلية):

imageView.layer.contentsRect = CGRectMake(0.0, 0.0, 0.3, 0.3);

ووصف "contentsRect": المستطيل، في وحدة تنسيق الفضاء، الذي يحدد جزء من محتويات الطبقة التي يجب استخدامها.

هل تريد أن عرض الصورة بحيث يتم تضمينها في UIImageView؟في هذه الحالة، فقط قم بتغيير contectMode الخاص بـ UIImageView إلى UIViewContentModeScaleToFill (إذا كانت نسبة العرض إلى الارتفاع غير مهمة) أو UIViewContentModeScaleAspectFit (إذا كنت تريد الحفاظ على نسبة العرض إلى الارتفاع)

في IB، يمكن القيام بذلك عن طريق ضبط الوضع في Inspector.

في الكود، يمكن القيام بذلك على النحو التالي

yourImageView.contentMode = UIViewContentModeScaleToFill;

في حال كنت تريد عرض الصورة الكبيرة كما هي داخل UIImageView, ، فإن أفضل وأسهل طريقة للقيام بذلك هي عرض الصورة داخل UIScrollView.بهذه الطريقة ستتمكن من تكبير الصورة وتصغيرها وتحريكها أيضًا.

امل ان يساعد.

والأمر لا يبدو مثل عينة MoveMe يفعل أي شيء مثل ما تريد. وPlacardView في ذلك هو نفس حجم الصورة المستخدمة. تغيير حجم الوحيد عمله لأنه نسخة تحويل، والتي لا تؤثر على العرض من الصورة. كما أفهمها، لديك صورة كبيرة، وتريد أن تظهر في العرض صغير فيه. ليس هناك أسلوب فئة بسيطة للقيام بذلك، ولكن هناك وظيفة التي يمكنك استخدامها للحصول على النتائج المرجوة: CGImageCreateWithImageInRect (CGImageRef، CGRect) سوف تساعدك على الخروج

وإليك مثال قصيرة استخدامه:

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);

وشكرا جزيلا. لقد وجدت الحل بسيط جدا التي تبدو مثل هذا:

CGRect frameRect = myImage.frame;
CGPoint rectPoint = frameRect.origin;
CGFloat newXPos = rectPoint.x - 0.5f;
myImage.frame = CGRectMake(newXPos, 0.0f, myImage.frame.size.width, myImage.frame.size.height);

وأنا مجرد تحريك إطار حول. يحدث أن أجزاء من هذا الإطار الخروج من ميناء فون وجهة نظر، ولكن آمل أن هذا لن يهم كثيرا. وهناك قناع أكثر من ذلك، لذلك لا تبدو غريبة. المستخدم لا totice كيف يتم ذلك.

ويمكنك إنجاز نفس حسب:

UIImageView *imgVw=[[UIImageView alloc]initwithFrame:CGRectMake(x,y,height,width)];     
imgVw.image=[UIImage imageNamed:@""];
[self.view addSubView imgVw];
imgVw.contentMode = UIViewContentModeScaleToFill;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top